lto-symtab.c (lto_symtab_compatible): Fold in ...
authorRichard Guenther <rguenther@suse.de>
Wed, 14 Oct 2009 14:14:44 +0000 (14:14 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Wed, 14 Oct 2009 14:14:44 +0000 (14:14 +0000)
commit200c8750d65ebebc8a0d6f6f77a7f02b5a4a8ef3
tree3d83178500a3538048d92b6df95e7c2182d671f7
parent77ce724c6b608989a50dd9ae86264ee0eec1b46a
lto-symtab.c (lto_symtab_compatible): Fold in ...

2009-10-14  Richard Guenther  <rguenther@suse.de>

* lto-symtab.c (lto_symtab_compatible): Fold in ...
(lto_symtab_merge): ... here.  Rewrite both to take the
prevailing and a to-be-merged entry and to queue diagnostics
properly.
(lto_symtab_resolve_replaceable_p): New predicate for
symbol resolution.
(lto_symtab_resolve_can_prevail_p): Likewise.
(lto_symtab_resolve_symbols): Rewrite.  Fold in code that
handles merging commons by choosing the largest decl.  Fold
in code that gives ODR errors.
(lto_symtab_merge_decls_2): Simplify a lot.  Emit queued
diagnostics here.
(lto_symtab_merge_decls_1): Re-structure.  Deal with the
case of no prevailing decl here.  Diagnose mismatches
in object types here.  Drop all but the prevailing decls.
(lto_symtab_prevailing_decl): Return the single prevailing decl.
* lto-streamer-in.c (lto_input_tree_ref): Deal with
VIEW_CONVERT_EXPRs in decl slots.  Unshare the tree in this case.

lto/
* lto.c (lto_fixup_tree): In case the prevailing decl is not
compatible with the one we replace wrap it around a
VIEW_CONVERT_EXPR.

From-SVN: r152768
gcc/ChangeLog
gcc/lto-streamer-in.c
gcc/lto-symtab.c
gcc/lto/ChangeLog
gcc/lto/lto.c