summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
authorEvan Cheng <evan.cheng@apple.com>2008-06-05 22:59:21 +0000
committerEvan Cheng <evan.cheng@apple.com>2008-06-05 22:59:21 +0000
commit9e76c047d10616c1e1ce8b8fd1b1ef975254fc08 (patch)
treeb8f67b2f65066c434e416cc24f1a9e68887cfd98 /llvm/lib
parentd32ae8edf2f49333b5d4c5383725d9f153f4da0e (diff)
downloadbcm5719-llvm-9e76c047d10616c1e1ce8b8fd1b1ef975254fc08.tar.gz
bcm5719-llvm-9e76c047d10616c1e1ce8b8fd1b1ef975254fc08.zip
Don't break strict aliasing.
llvm-svn: 52026
Diffstat (limited to 'llvm/lib')
-rw-r--r--llvm/lib/Target/X86/X86JITInfo.cpp12
1 files changed, 6 insertions, 6 deletions
diff --git a/llvm/lib/Target/X86/X86JITInfo.cpp b/llvm/lib/Target/X86/X86JITInfo.cpp
index 0ca93d9e92f..9aff83a5a40 100644
--- a/llvm/lib/Target/X86/X86JITInfo.cpp
+++ b/llvm/lib/Target/X86/X86JITInfo.cpp
@@ -396,8 +396,8 @@ void *X86JITInfo::emitGlobalValueLazyPtr(const GlobalValue* GV, void *ptr,
MachineCodeEmitter &MCE) {
#if defined (X86_64_JIT)
MCE.startFunctionStub(GV, 8, 8);
- MCE.emitWordLE(((unsigned *)&ptr)[0]);
- MCE.emitWordLE(((unsigned *)&ptr)[1]);
+ MCE.emitWordLE((unsigned)(intptr_t)ptr);
+ MCE.emitWordLE((unsigned)(((intptr_t)ptr) >> 32));
#else
MCE.startFunctionStub(GV, 4, 4);
MCE.emitWordLE((intptr_t)ptr);
@@ -420,8 +420,8 @@ void *X86JITInfo::emitFunctionStub(const Function* F, void *Fn,
MCE.startFunctionStub(F, 13, 4);
MCE.emitByte(0x49); // REX prefix
MCE.emitByte(0xB8+2); // movabsq r10
- MCE.emitWordLE(((unsigned *)&Fn)[0]);
- MCE.emitWordLE(((unsigned *)&Fn)[1]);
+ MCE.emitWordLE((unsigned)(intptr_t)Fn);
+ MCE.emitWordLE((unsigned)(((intptr_t)Fn) >> 32));
MCE.emitByte(0x41); // REX prefix
MCE.emitByte(0xFF); // jmpq *r10
MCE.emitByte(2 | (4 << 3) | (3 << 6));
@@ -437,8 +437,8 @@ void *X86JITInfo::emitFunctionStub(const Function* F, void *Fn,
MCE.startFunctionStub(F, 14, 4);
MCE.emitByte(0x49); // REX prefix
MCE.emitByte(0xB8+2); // movabsq r10
- MCE.emitWordLE(((unsigned *)&Fn)[0]);
- MCE.emitWordLE(((unsigned *)&Fn)[1]);
+ MCE.emitWordLE((unsigned)(intptr_t)Fn);
+ MCE.emitWordLE((unsigned)(((intptr_t)Fn) >> 32));
MCE.emitByte(0x41); // REX prefix
MCE.emitByte(0xFF); // callq *r10
MCE.emitByte(2 | (2 << 3) | (3 << 6));
OpenPOWER on IntegriCloud