mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-14 11:32:34 +00:00
Satisfy C++ aliasing rules, per suggestion by Chandler.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158346 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
138c2b4e8a
commit
3e61374295
@ -28,7 +28,12 @@ namespace llvm {
|
|||||||
///
|
///
|
||||||
/// This is embedded in the class and we avoid malloc'ing/free'ing it,
|
/// This is embedded in the class and we avoid malloc'ing/free'ing it,
|
||||||
/// to make this class more safe for use along with CrashRecoveryContext.
|
/// to make this class more safe for use along with CrashRecoveryContext.
|
||||||
ThreadLocalDataTy data;
|
union {
|
||||||
|
char data[sizeof(ThreadLocalDataTy)];
|
||||||
|
struct {
|
||||||
|
ThreadLocalDataTy align_data;
|
||||||
|
};
|
||||||
|
};
|
||||||
public:
|
public:
|
||||||
ThreadLocalImpl();
|
ThreadLocalImpl();
|
||||||
virtual ~ThreadLocalImpl();
|
virtual ~ThreadLocalImpl();
|
||||||
|
@ -40,7 +40,7 @@ void ThreadLocalImpl::removeInstance() { data = 0; }
|
|||||||
namespace llvm {
|
namespace llvm {
|
||||||
using namespace sys;
|
using namespace sys;
|
||||||
|
|
||||||
ThreadLocalImpl::ThreadLocalImpl() : data(0) {
|
ThreadLocalImpl::ThreadLocalImpl() : data() {
|
||||||
typedef int SIZE_TOO_BIG[sizeof(pthread_key_t) <= sizeof(data) ? 1 : -1];
|
typedef int SIZE_TOO_BIG[sizeof(pthread_key_t) <= sizeof(data) ? 1 : -1];
|
||||||
pthread_key_t* key = reinterpret_cast<pthread_key_t*>(&data);
|
pthread_key_t* key = reinterpret_cast<pthread_key_t*>(&data);
|
||||||
int errorcode = pthread_key_create(key, NULL);
|
int errorcode = pthread_key_create(key, NULL);
|
||||||
|
@ -22,7 +22,7 @@
|
|||||||
namespace llvm {
|
namespace llvm {
|
||||||
using namespace sys;
|
using namespace sys;
|
||||||
|
|
||||||
ThreadLocalImpl::ThreadLocalImpl() : data(0) {
|
ThreadLocalImpl::ThreadLocalImpl() : data() {
|
||||||
typedef int SIZE_TOO_BIG[sizeof(DWORD) <= sizeof(data) ? 1 : -1];
|
typedef int SIZE_TOO_BIG[sizeof(DWORD) <= sizeof(data) ? 1 : -1];
|
||||||
DWORD* tls = reinterpret_cast<DWORD*>(&data);
|
DWORD* tls = reinterpret_cast<DWORD*>(&data);
|
||||||
*tls = TlsAlloc();
|
*tls = TlsAlloc();
|
||||||
|
Loading…
Reference in New Issue
Block a user