diff options
author | Alexandre Oliva <aoliva@redhat.com> | 2004-07-12 21:51:03 +0000 |
---|---|---|
committer | Alexandre Oliva <aoliva@gcc.gnu.org> | 2004-07-12 21:51:03 +0000 |
commit | a0c71497f59230197b683c5a6a6190bcfcdf5dc2 (patch) | |
tree | dbb95dd46733fbf5b9eb43a800dbd92b696cdb61 | |
parent | 9baba81be56e46677dbe5c558368fd023d45c2a9 (diff) | |
download | gcc-a0c71497f59230197b683c5a6a6190bcfcdf5dc2.zip gcc-a0c71497f59230197b683c5a6a6190bcfcdf5dc2.tar.gz gcc-a0c71497f59230197b683c5a6a6190bcfcdf5dc2.tar.bz2 |
passes.c (rest_of_decl_compilation): Don't defer call of assemble_variable if its DECL_RTL is already set.
* passes.c (rest_of_decl_compilation): Don't defer call of
assemble_variable if its DECL_RTL is already set.
From-SVN: r84576
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/passes.c | 9 |
2 files changed, 13 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 489ca19..96b391f 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2004-07-12 Alexandre Oliva <aoliva@redhat.com> + + * passes.c (rest_of_decl_compilation): Don't defer call of + assemble_variable if its DECL_RTL is already set. + 2004-07-12 Sebastian Pop <pop@cri.ensmp.fr> * cfgloop.h (struct loop): Add nb_iterations field. diff --git a/gcc/passes.c b/gcc/passes.c index 0e85c1c..52b71a3 100644 --- a/gcc/passes.c +++ b/gcc/passes.c @@ -370,7 +370,14 @@ rest_of_decl_compilation (tree decl, && !DECL_EXTERNAL (decl)) { if (flag_unit_at_a_time && !cgraph_global_info_ready - && TREE_CODE (decl) != FUNCTION_DECL && top_level) + && TREE_CODE (decl) != FUNCTION_DECL && top_level + /* If we defer processing of decls that have had their + DECL_RTL set above (say, in make_decl_rtl), + check_global_declarations() will clear it before + assemble_variable has a chance to act on it. This + would remove all traces of the register name in a + global register variable, for example. */ + && !DECL_RTL_SET_P (decl)) cgraph_varpool_finalize_decl (decl); else assemble_variable (decl, top_level, at_end, 0); |