tree-dfa.c (add_referenced_var): Walk initializers of non-constant/readonly static...
authorJan Hubicka <jh@suse.cz>
Wed, 20 Dec 2006 22:45:42 +0000 (23:45 +0100)
committerJan Hubicka <hubicka@gcc.gnu.org>
Wed, 20 Dec 2006 22:45:42 +0000 (22:45 +0000)
* tree-dfa.c (add_referenced_var): Walk initializers of
non-constant/readonly static vars.

From-SVN: r120090

gcc/ChangeLog
gcc/tree-dfa.c

index c4bcad1..0660654 100644 (file)
@@ -1,5 +1,10 @@
 2006-12-20  Jan Hubicka  <jh@suse.cz>
 
+       * tree-dfa.c (add_referenced_var): Walk initializers of
+       non-constant/readonly static vars.
+
+2006-12-20  Jan Hubicka  <jh@suse.cz>
+
        * tree-flow-inline.h (gimple_var_anns): New function.
        (var_ann): Use hashtable for static functions.
        * tree-dfa.c (create_var_ann): Likewise.
index 5b9c724..9c30eb5 100644 (file)
@@ -741,15 +741,13 @@ add_referenced_var (tree var)
 
       /* Scan DECL_INITIAL for pointer variables as they may contain
         address arithmetic referencing the address of other
-        variables.  */
+        variables.  
+        Even non-constant intializers need to be walked, because
+        IPA passes might prove that their are invariant later on.  */
       if (DECL_INITIAL (var)
          /* Initializers of external variables are not useful to the
             optimizers.  */
-          && !DECL_EXTERNAL (var)
-         /* It's not necessary to walk the initial value of non-constant
-            variables because it cannot be propagated by the
-            optimizers.  */
-         && (TREE_CONSTANT (var) || TREE_READONLY (var)))
+          && !DECL_EXTERNAL (var))
        walk_tree (&DECL_INITIAL (var), find_vars_r, NULL, 0);
     }
 }