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);
}