[llvm-commits] [llvm] r52026 - /llvm/trunk/lib/Target/X86/X86JITInfo.cpp
Evan Cheng
evan.cheng at apple.com
Thu Jun 5 15:59:21 PDT 2008
Author: evancheng
Date: Thu Jun 5 17:59:21 2008
New Revision: 52026
URL: http://llvm.org/viewvc/llvm-project?rev=52026&view=rev
Log:
Don't break strict aliasing.
Modified:
llvm/trunk/lib/Target/X86/X86JITInfo.cpp
Modified: llvm/trunk/lib/Target/X86/X86JITInfo.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86JITInfo.cpp?rev=52026&r1=52025&r2=52026&view=diff
==============================================================================
--- llvm/trunk/lib/Target/X86/X86JITInfo.cpp (original)
+++ llvm/trunk/lib/Target/X86/X86JITInfo.cpp Thu Jun 5 17:59:21 2008
@@ -396,8 +396,8 @@
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 @@
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 @@
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));
More information about the llvm-commits
mailing list