From dc700f497caaf7c36db7220ab6f827b8dcf6a7e6 Mon Sep 17 00:00:00 2001 From: Richard Henderson Date: Thu, 26 Aug 2004 17:55:38 -0700 Subject: [PATCH] Update comment for staticp. From-SVN: r86652 --- gcc/tree.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/gcc/tree.c b/gcc/tree.c index 27efff1d49f..1c5060e5869 100644 --- a/gcc/tree.c +++ b/gcc/tree.c @@ -1363,8 +1363,9 @@ array_type_nelts (tree type) : fold (build2 (MINUS_EXPR, TREE_TYPE (max), max, min))); } -/* Return true if arg is static -- a reference to an object in - static storage. This is not the same as the C meaning of `static'. */ +/* If arg is static -- a reference to an object in static storage -- then + return the object. This is not the same as the C meaning of `static'. + If arg isn't static, return NULL. */ tree staticp (tree arg) @@ -2270,7 +2271,11 @@ do { tree _node = (NODE); \ address of a volatile variable is not volatile.) If it's a constant, the address is both invariant and constant. Otherwise it's neither. */ if (TREE_CODE (node) == INDIRECT_REF) - UPDATE_TITCSE (node); + { + /* If this is &((T*)0)->field, then this is a form of addition. */ + if (TREE_CODE (TREE_OPERAND (node, 0)) != INTEGER_CST) + UPDATE_TITCSE (node); + } else if (DECL_P (node)) { if (staticp (node)) -- 2.30.2