aboutsummaryrefslogtreecommitdiff
path: root/gcc/passes.c
diff options
context:
space:
mode:
authorRichard Henderson <rth@redhat.com>2005-03-16 09:15:11 -0800
committerRichard Henderson <rth@gcc.gnu.org>2005-03-16 09:15:11 -0800
commite4d5432a7343e870ebcee2fb510afc694dcc80ac (patch)
treedea6e2717e4d542e86bb9d06e16d59fe24986dbf /gcc/passes.c
parent5f6c8a56a726b191f7a603caa0b7dc65f2e3e5bf (diff)
downloadgcc-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.c4
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. */