1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-24 11:42:57 +01:00

Disable the use of std::call_once on PowerPC due to an apparent bug in

libstdc++ (or in compilers, or somewhere, I can't track it down) that
causes unittests that use INITIALIZE_PASS to crash.

The analysis I've been able to do is that inside libstdc++'s
implementation of std::call_once, it uses pthread_once, and when that
returns an error code it throws std::system_error which then eventually
calls std::terminate.

Hopefully some of the folks who work on PPC can try to sort out what's
going on here. Until then, they'll have to use the fallback
implementation.

llvm-svn: 271821
This commit is contained in:
Chandler Carruth 2016-06-05 02:46:01 +00:00
parent 37b3d11aec
commit c6ece6bf3b

View File

@ -23,7 +23,8 @@
// We use std::call_once on all Unix platforms except for NetBSD with // We use std::call_once on all Unix platforms except for NetBSD with
// libstdc++. That platform has a bug they are working to fix, and they'll // libstdc++. That platform has a bug they are working to fix, and they'll
// remove the NetBSD checks once fixed. // remove the NetBSD checks once fixed.
#if defined(LLVM_ON_UNIX) && !(defined(__NetBSD__) && !defined(_LIBCPP_VERSION)) #if defined(LLVM_ON_UNIX) && \
!(defined(__NetBSD__) && !defined(_LIBCPP_VERSION)) && !defined(__ppc__)
#define LLVM_THREADING_USE_STD_CALL_ONCE 1 #define LLVM_THREADING_USE_STD_CALL_ONCE 1
#else #else
#define LLVM_THREADING_USE_STD_CALL_ONCE 0 #define LLVM_THREADING_USE_STD_CALL_ONCE 0