This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH] better error message for multiple prevailing defs


I have some trouble with the linker providing multiple prevailing
definitions for a single LTO symbol. Right now it's difficult 
to find out which symbol this even is, can be only done with the 
debugger. Fix the error message to print out the symbol.

I have no svn account, so someone would need to commit it for me.

-Andi
 
2010-07-11  Andi Kleen  <ak@linux.intel.com>
    
	* lto-symtab.c (lto_symtab_merge_decls_1): Use internal_error
    	instead of gcc_assert to print better error message for multiple
    	prevailing defs.

diff --git a/gcc/lto-symtab.c b/gcc/lto-symtab.c
index d101449..c907723 100644
--- a/gcc/lto-symtab.c
+++ b/gcc/lto-symtab.c
@@ -648,9 +648,13 @@ lto_symtab_merge_decls_1 (void **slot, void *data ATTRIBUTE_UNUSED)
 
   /* Assert it's the only one.  */
   if (prevailing)
-    for (e = prevailing->next; e; e = e->next)
-      gcc_assert (e->resolution != LDPR_PREVAILING_DEF_IRONLY
-		  && e->resolution != LDPR_PREVAILING_DEF);
+      for (e = prevailing->next; e; e = e->next)
+	{
+	  if (e->resolution != LDPR_PREVAILING_DEF_IRONLY
+	      && e->resolution != LDPR_PREVAILING_DEF)
+	    internal_error ("multiple prevailing defs for %qE", 
+			    DECL_NAME (prevailing->decl));
+	}
 
   /* If there's not a prevailing symbol yet it's an external reference.
      Happens a lot during ltrans.  Choose the first symbol with a


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]