aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Guenther <rguenther@suse.de>2010-12-10 15:53:58 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2010-12-10 15:53:58 +0000
commit97ce54b9ed9b518d6c028b138c06c914e11b7622 (patch)
treed620a38c859ec655c97f3ad337095c439fb24350 /gcc
parentd479b128517fd9f7371b902073b305f78999751c (diff)
downloadgcc-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/ChangeLog7
-rw-r--r--gcc/lto-symtab.c16
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