[Bug libstdc++/68739] FAIL: 30_threads/call_once/constexpr.cc (test for excess errors)
danglin at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Sat Feb 18 16:27:00 GMT 2017
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68739
--- Comment #3 from John David Anglin <danglin at gcc dot gnu.org> ---
As far as I can tell, the definition for PTHREAD_MUTEX_INITIALIZE only involves
constant elements:
#define PTHREAD_MUTEX_INITIALIZER { \
__PTHREAD_MUTEX_VALID, 0, \
(PTHREAD_MUTEX_DEFAULT | PTHREAD_PROCESS_PRIVATE), \
__SPNLCK_INITIALIZER, \
0, 0, -1, 0, \
0, __LWP_MTX_VALID, 0, 1, 1, 1, 1, \
0, 0 \
}
__GTHREAD_MUTEX_INIT is defined.
We have the following declaration for struct pthread_mutex:
#ifdef __LP64__
#define __MPOINTER void *m_ptr
#define __POINTER_SET ((void *) 1LL)
#else
#define __MPOINTER int m_pad; \
void *m_ptr
#define __POINTER_SET 0, ((void *) 1L)
#endif
struct pthread_mutex {
short m_short[2];
int m_int;
int m_int1[4];
__MPOINTER;
int m_int2[2];
int m_int3[4];
short m_short2[2];
int m_int4[5];
int m_int5[2];
};
We have:
#define __PTHREAD_MUTEX_VALID 0x36
#define __LWP_MTX_VALID 2368
#define PTHREAD_MUTEX_DEFAULT 0x80
#define PTHREAD_PROCESS_PRIVATE 0x1
and
#define __SPNLCK_INITIALIZER \
1, 1, 1, 1, \
__POINTER_SET, \
1, \
0
I guess the problem is the shorts. But we don't have a literal suffix for it.
More information about the Gcc-bugs
mailing list