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]

Fix ICE with weakref


Hi,
this patch fixes oversight in symtab_node::binds_to_current_def_p when dealing
with weakrefs.

Bootstrapped/regtested x86_64-linux, comitted.

Honza

	PR middle-end/77674
	* symtab.c (symtab_node::binds_to_current_def_p): Fix handling of
	transparent aliases.

	PR middle-end/77674
	* g++.dg/torture/pr77674.C: New testcase.
Index: symtab.c
===================================================================
--- symtab.c	(revision 243992)
+++ symtab.c	(working copy)
@@ -2214,6 +2214,9 @@ symtab_node::binds_to_current_def_p (sym
 {
   if (!definition)
     return false;
+  if (transparent_alias)
+    return definition
+	   && get_alias_target()->binds_to_current_def_p (ref);
   if (decl_binds_to_current_def_p (decl))
     return true;
 
@@ -2225,8 +2228,6 @@ symtab_node::binds_to_current_def_p (sym
   if (DECL_EXTERNAL (decl))
     return false;
 
-  if (!externally_visible)
-    debug ();
   gcc_assert (externally_visible);
 
   if (ref)
Index: testsuite/g++.dg/torture/pr77674.C
===================================================================
--- testsuite/g++.dg/torture/pr77674.C	(revision 0)
+++ testsuite/g++.dg/torture/pr77674.C	(working copy)
@@ -0,0 +1,15 @@
+// { dg-do compile }
+typedef struct { } __fsid_t;
+typedef unsigned long int pthread_t;
+extern "C" {
+  extern __inline __attribute__ ((__gnu_inline__)) int pthread_equal (pthread_t __thread1, pthread_t __thread2) throw ()   {
+  }
+}
+typedef pthread_t __gthread_t;
+static __typeof (pthread_equal)      __gthrw_pthread_equal __attribute__ ((__weakref__ ("pthread_equal")));
+
+static inline int __gthread_equal (__gthread_t __t1, __gthread_t __t2)
+{
+  return __gthrw_pthread_equal (__t1, __t2);
+}
+


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