From 59c982fe93b0c73af8e3208ae2f050cfce282849 Mon Sep 17 00:00:00 2001 From: Jan Hubicka Date: Thu, 3 Mar 2005 20:53:47 +0100 Subject: [PATCH] tree-dfa.c (add_referenced_var): Don't walk initializer of external and non-constant public variables. * tree-dfa.c (add_referenced_var): Don't walk initializer of external and non-constant public variables. From-SVN: r95844 --- gcc/ChangeLog | 5 +++++ gcc/tree-dfa.c | 9 ++++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index ba2e68a1fe6..1b544690f48 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2005-03-03 Jan Hubicka + + * tree-dfa.c (add_referenced_var): Don't walk initializer of external + and non-constant public variables. + 2005-03-03 Kazu Hirata * tree-cfg.c (stmt_starts_bb_p): Clean up by replacing code diff --git a/gcc/tree-dfa.c b/gcc/tree-dfa.c index b591ffb5e7e..641bb1b4df4 100644 --- a/gcc/tree-dfa.c +++ b/gcc/tree-dfa.c @@ -901,7 +901,14 @@ add_referenced_var (tree var, struct walk_state *walk_state) /* Scan DECL_INITIAL for pointer variables as they may contain address arithmetic referencing the address of other variables. */ - if (DECL_INITIAL (var)) + 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 + public variables because it cannot be propagated by the + optimizers. */ + && (!TREE_PUBLIC (var) || !TREE_CONSTANT (var))) walk_tree (&DECL_INITIAL (var), find_vars_r, walk_state, 0); } } -- 2.30.2