From dc700f497caaf7c36db7220ab6f827b8dcf6a7e6 Mon Sep 17 00:00:00 2001
From: Richard Henderson <rth@gcc.gnu.org>
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 27efff1d49ff..1c5060e5869b 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))
-- 
GitLab