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

--- Comment #4 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
extern "C" inline void foo () {}
static void bar () __attribute__((__weakref__("foo")));
void baz () { bar (); }

I've tried to:
--- cgraph.h.jj 2018-11-09 21:16:44.792168407 +0100
+++ cgraph.h    2018-11-23 19:18:38.874777589 +0100
@@ -377,7 +377,11 @@ public:
      constructors.  */
   inline bool comdat_local_p (void)
   {
-    return (same_comdat_group && !TREE_PUBLIC (decl));
+    if (!same_comdat_group || TREE_PUBLIC (decl))
+      return false;
+    if (weakref)
+      return get_alias_target ()->comdat_local_p ();
+    return true;
   }

   /* Return true if ONE and TWO are part of the same COMDAT group.  */

but it ICEs later on.  Honza, can you please have a look?

Reply via email to