From a40c29610c1f47a94cb46ae57d65a85edb725b31 Mon Sep 17 00:00:00 2001 From: Jan Hubicka Date: Thu, 4 Dec 2003 00:04:23 +0100 Subject: [PATCH] re PR rtl-optimization/12324 ([unit-at-a-time] not emitting function referenced from a compound statement) PR optimization/12324 * toplev.c (rest_of_decl_compilation): Do not deffer when compiling in unit-at-a-time mode. From-SVN: r74252 --- gcc/ChangeLog | 6 ++++++ gcc/toplev.c | 11 +++++++++-- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index fde381b0752..d951c37b83f 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2003-12-03 Jan Hubicka + + PR optimization/12324 + * toplev.c (rest_of_decl_compilation): Do not deffer when compiling + in unit-at-a-time mode. + 2003-12-03 Jakub Jelinek * expr.c (store_constructor): Only set RTX_UNCHANGING_P for diff --git a/gcc/toplev.c b/gcc/toplev.c index e4139611c5c..47cdc73c792 100644 --- a/gcc/toplev.c +++ b/gcc/toplev.c @@ -1920,8 +1920,15 @@ rest_of_decl_compilation (tree decl, make_decl_rtl (decl, asmspec); /* Don't output anything when a tentative file-scope definition - is seen. But at end of compilation, do output code for them. */ - if ((at_end || !DECL_DEFER_OUTPUT (decl)) && !DECL_EXTERNAL (decl)) + is seen. But at end of compilation, do output code for them. + + We do output all variables when unit-at-a-time is active and rely on + callgraph code to defer them except for forward declarations + (see gcc.c-torture/compile/920624-1.c) */ + if ((at_end + || !DECL_DEFER_OUTPUT (decl) + || (flag_unit_at_a_time && DECL_INITIAL (decl))) + && !DECL_EXTERNAL (decl)) { if (flag_unit_at_a_time && !cgraph_global_info_ready && TREE_CODE (decl) != FUNCTION_DECL && top_level) -- 2.30.2