This is the mail archive of the gcc@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]

weakref miscompiling libgfortran


This test case, simplified from libgfortran, currently results in a
tail call to pthread_mutex_unlock on i686 with -fpic, and is the cause
of all the libgomp fortran failures on the branch.  That this isn't
seen on mainline is simply a consequence of not using any threadded
fortran code on mainline.

That targetm.binds_local_p is no longer reliable is a serious bug.

And unless GeoffK can be convinced that the current setting of
TREE_PUBLIC is in fact ON, then we'll have to audit every single
use of that symbol, and determine if it actually should be testing
targetm.binds_local_p, or some new predicate yet to be determined.



r~


typedef struct pthread_mutex_tag pthread_mutex_t;

extern int pthread_mutex_unlock (pthread_mutex_t *__mutex)
   __attribute__ ((__nothrow__));

static __typeof(pthread_mutex_unlock) __gthrw_pthread_mutex_unlock
  __attribute__ ((__weakref__("pthread_mutex_unlock")));

void foo(pthread_mutex_t *m)
{
  __gthrw_pthread_mutex_unlock (m);
}


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