diff options
author | Richard Guenther <rguenther@suse.de> | 2010-12-10 15:53:58 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2010-12-10 15:53:58 +0000 |
commit | 97ce54b9ed9b518d6c028b138c06c914e11b7622 (patch) | |
tree | d620a38c859ec655c97f3ad337095c439fb24350 /gcc | |
parent | d479b128517fd9f7371b902073b305f78999751c (diff) | |
download | gcc-97ce54b9ed9b518d6c028b138c06c914e11b7622.zip gcc-97ce54b9ed9b518d6c028b138c06c914e11b7622.tar.gz gcc-97ce54b9ed9b518d6c028b138c06c914e11b7622.tar.bz2 |
re PR lto/46808 (Too verbose diagnostic messages when compiling with LTO)
2010-12-10 Richard Guenther <rguenther@suse.de>
PR lto/46808
* lto-symtab.c (lto_symtab_merge_decls_2): Avoid type warnings
after errors.
(lto_symtab_merge_decls_1): Adjust.
From-SVN: r167690
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/lto-symtab.c | 16 |
2 files changed, 13 insertions, 10 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 588a8cf..664bef9 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2010-12-10 Richard Guenther <rguenther@suse.de> + + PR lto/46808 + * lto-symtab.c (lto_symtab_merge_decls_2): Avoid type warnings + after errors. + (lto_symtab_merge_decls_1): Adjust. + 2010-12-10 Dave Korn <dave.korn.cygwin@gmail.com> PR middle-end/46674 diff --git a/gcc/lto-symtab.c b/gcc/lto-symtab.c index c86bbcc..f18b322 100644 --- a/gcc/lto-symtab.c +++ b/gcc/lto-symtab.c @@ -593,16 +593,16 @@ found: } /* Merge all decls in the symbol table chain to the prevailing decl and - issue diagnostics about type mismatches. */ + issue diagnostics about type mismatches. If DIAGNOSED_P is true + do not issue further diagnostics.*/ static void -lto_symtab_merge_decls_2 (void **slot) +lto_symtab_merge_decls_2 (void **slot, bool diagnosed_p) { lto_symtab_entry_t prevailing, e; VEC(tree, heap) *mismatches = NULL; unsigned i; tree decl; - bool diagnosed_p = false; /* Nothing to do for a single entry. */ prevailing = (lto_symtab_entry_t) *slot; @@ -612,7 +612,8 @@ lto_symtab_merge_decls_2 (void **slot) /* Try to merge each entry with the prevailing one. */ for (e = prevailing->next; e; e = e->next) { - if (!lto_symtab_merge (prevailing, e)) + if (!lto_symtab_merge (prevailing, e) + && !diagnosed_p) VEC_safe_push (tree, heap, mismatches, e->decl); } if (VEC_empty (tree, mismatches)) @@ -751,12 +752,7 @@ lto_symtab_merge_decls_1 (void **slot, void *data ATTRIBUTE_UNUSED) /* Merge the chain to the single prevailing decl and diagnose mismatches. */ - lto_symtab_merge_decls_2 (slot); - - /* Drop all but the prevailing decl from the symtab. */ - if (TREE_CODE (prevailing->decl) != FUNCTION_DECL - && TREE_CODE (prevailing->decl) != VAR_DECL) - prevailing->next = NULL; + lto_symtab_merge_decls_2 (slot, diagnosed_p); /* Store resolution decision into the callgraph. In LTRANS don't overwrite information we stored into callgraph at |