mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-08-15 22:28:18 +00:00
Modify an assert to avoid what looks like a GCC 4.2.4 signed-ness bug.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79494 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -495,9 +495,11 @@ void X86JITInfo::emitFunctionStubAtAddr(const Function* F, void *Fn, void *Stub,
|
|||||||
// complains about casting a function pointer to a normal pointer.
|
// complains about casting a function pointer to a normal pointer.
|
||||||
JCE.startGVStub(F, Stub, 5);
|
JCE.startGVStub(F, Stub, 5);
|
||||||
JCE.emitByte(0xE9);
|
JCE.emitByte(0xE9);
|
||||||
#if defined (X86_64_JIT)
|
#if defined (X86_64_JIT) && !defined (NDEBUG)
|
||||||
assert(((((intptr_t)Fn-JCE.getCurrentPCValue()-5) << 32) >> 32) ==
|
// Yes, we need both of these casts, or some broken versions of GCC (4.2.4)
|
||||||
((intptr_t)Fn-JCE.getCurrentPCValue()-5)
|
// get the signed-ness of the expression wrong. Go figure.
|
||||||
|
intptr_t Displacement = (intptr_t)Fn - (intptr_t)JCE.getCurrentPCValue() - 5;
|
||||||
|
assert(((Displacement << 32) >> 32) == Displacement
|
||||||
&& "PIC displacement does not fit in displacement field!");
|
&& "PIC displacement does not fit in displacement field!");
|
||||||
#endif
|
#endif
|
||||||
JCE.emitWordLE((intptr_t)Fn-JCE.getCurrentPCValue()-4);
|
JCE.emitWordLE((intptr_t)Fn-JCE.getCurrentPCValue()-4);
|
||||||
|
Reference in New Issue
Block a user