https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78562

--- Comment #6 from rguenther at suse dot de <rguenther at suse dot de> ---
On Mon, 28 Nov 2016, gjl at gcc dot gnu.org wrote:

> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78562
> 
> --- Comment #5 from Georg-Johann Lay <gjl at gcc dot gnu.org> ---
> Maybe it is an option to be less strict?  In the test case, both function name
> and asm name (libname) are in the namespace of the implementation: both start
> with 2 underscores.  The function name even starts with __builtin_...

Yes, as I said, being less strict and for example not diagnosing
this as if it were in "system headers" would probably work.

diff --git a/gcc/lto/lto-symtab.c b/gcc/lto/lto-symtab.c
index ce9e146..cf53d62 100644
--- a/gcc/lto/lto-symtab.c
+++ b/gcc/lto/lto-symtab.c
@@ -655,6 +655,13 @@ lto_symtab_merge_decls_2 (symtab_node *first, bool 
diagnosed_p)
   /* Diagnose all mismatched re-declarations.  */
   FOR_EACH_VEC_ELT (mismatches, i, decl)
     {
+      /* Do not diagnose two built in declarations, there is no useful
+         location in that case.  It also happens spuriously for AVR,
+        see PR78562.  */
+      if (DECL_IS_BUILTIN (prevailing->decl)
+         && DECL_IS_BUILTIN (decl))
+       continue;
+
       int level = warn_type_compatibility_p (TREE_TYPE 
(prevailing->decl),
                                             TREE_TYPE (decl),
                                             DECL_COMDAT (decl));

works for me for the testcase.  Can you give it some more testing
on your side and propose it on the mailing list?

Reply via email to