diff options
author | Richard Henderson <rth@redhat.com> | 2005-03-16 09:15:11 -0800 |
---|---|---|
committer | Richard Henderson <rth@gcc.gnu.org> | 2005-03-16 09:15:11 -0800 |
commit | e4d5432a7343e870ebcee2fb510afc694dcc80ac (patch) | |
tree | dea6e2717e4d542e86bb9d06e16d59fe24986dbf /gcc/passes.c | |
parent | 5f6c8a56a726b191f7a603caa0b7dc65f2e3e5bf (diff) | |
download | gcc-e4d5432a7343e870ebcee2fb510afc694dcc80ac.zip gcc-e4d5432a7343e870ebcee2fb510afc694dcc80ac.tar.gz gcc-e4d5432a7343e870ebcee2fb510afc694dcc80ac.tar.bz2 |
re PR middle-end/15700 ([unit-at-a-time] Inlining problem leads to miscompilation of glibc)
PR middle-end/15700
* varasm.c (struct alias_pair): Rename from struct output_def_pair.
(alias_pairs): Rename from output_defs.
(find_decl_and_mark_needed): Split out from assemble_alias.
(do_assemble_alias): New.
(assemble_output_def): Remove.
(finish_aliases_1, finish_aliases_2): New.
(process_pending_assemble_output_defs): Remove.
(assemble_alias): Defer aliases for which we don't yet have a
non-external decl for the target symbol.
* passes.c (rest_of_decl_compilation): Register variables with cgraph.
* cgraphunit.c (cgraph_finalize_compilation_unit): Use finish_aliases_1. * toplev.c (compile_file): Use finish_aliases_2 instead of
process_pending_assemble_output_defs.
* tree.h (finish_aliases_1, finish_aliases_2): Declare.
(process_pending_assemble_output_defs): Remove.
* gcc.c-torture/compile/20040323-1.c: Don't xfail for solaris.
(_rtld_global): New.
* gcc.dg/weak/weak-3.c (ffoox1f, ffoox1g): Define.
* gcc.dg/weak/weak-9.c (notf1, notf2, notf3, notf4): Define.
* gcc.dg/alias-3.c: New.
* gcc.dg/alias-4.c: New.
* gcc.dg/alias-5.c: New.
* gcc.dg/alias-6.c: New.
From-SVN: r96564
Diffstat (limited to 'gcc/passes.c')
-rw-r--r-- | gcc/passes.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/gcc/passes.c b/gcc/passes.c index 65c183d..7bb661d 100644 --- a/gcc/passes.c +++ b/gcc/passes.c @@ -251,6 +251,10 @@ rest_of_decl_compilation (tree decl, debug_hooks->type_decl (decl, !top_level); timevar_pop (TV_SYMOUT); } + + /* Let cgraph know about the existance of variables. */ + if (TREE_CODE (decl) == VAR_DECL && !DECL_EXTERNAL (decl)) + cgraph_varpool_node (decl); } /* Called after finishing a record, union or enumeral type. */ |