Fix illegal cross-type aliasing. Found by baldrick on a newer gcc.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83401 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Jeffrey Yasskin 2009-10-06 19:06:16 +00:00
parent 60b35bd8ec
commit 0f2ba783d9

View File

@ -99,9 +99,8 @@ TEST(JIT, GlobalInFunction) {
// Get the pointer to the native code to force it to JIT the function and // Get the pointer to the native code to force it to JIT the function and
// allocate space for the global. // allocate space for the global.
void (*F1Ptr)(); void (*F1Ptr)() =
// Hack to avoid ISO C++ warning about casting function pointers. reinterpret_cast<void(*)()>((intptr_t)JIT->getPointerToFunction(F1));
*(void**)(void*)&F1Ptr = JIT->getPointerToFunction(F1);
// Since F1 was codegen'd, a pointer to G should be available. // Since F1 was codegen'd, a pointer to G should be available.
int32_t *GPtr = (int32_t*)JIT->getPointerToGlobalIfAvailable(G); int32_t *GPtr = (int32_t*)JIT->getPointerToGlobalIfAvailable(G);
@ -115,9 +114,8 @@ TEST(JIT, GlobalInFunction) {
// Make a second function identical to the first, referring to the same // Make a second function identical to the first, referring to the same
// global. // global.
Function *F2 = makeReturnGlobal("F2", G, M); Function *F2 = makeReturnGlobal("F2", G, M);
// Hack to avoid ISO C++ warning about casting function pointers. void (*F2Ptr)() =
void (*F2Ptr)(); reinterpret_cast<void(*)()>((intptr_t)JIT->getPointerToFunction(F2));
*(void**)(void*)&F2Ptr = JIT->getPointerToFunction(F2);
// F2() should increment G. // F2() should increment G.
F2Ptr(); F2Ptr();