This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug libstdc++/68739] FAIL: 30_threads/call_once/constexpr.cc (test for excess errors)
- From: "danglin at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Sat, 18 Feb 2017 16:27:28 +0000
- Subject: [Bug libstdc++/68739] FAIL: 30_threads/call_once/constexpr.cc (test for excess errors)
- Auto-submitted: auto-generated
- References: <bug-68739-4@http.gcc.gnu.org/bugzilla/>
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.