Fix the C-API MCJIT test for 32-bit big endian machines.

Avoid using unions for storing the return value from
LLVMGetGlobalValueAddress() and LLVMGetFunctionAddress() and accessing it as
a pointer through another pointer member. This causes problems on 32-bit big
endian machines since the pointer gets the higher part of the return value of
the aforementioned functions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@226170 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Vasileios Kalintiris 2015-01-15 15:36:04 +00:00
parent b6d562e480
commit add8f51c26

View File

@ -359,13 +359,10 @@ TEST_F(MCJITCAPITest, gva) {
buildMCJITEngine(); buildMCJITEngine();
buildAndRunPasses(); buildAndRunPasses();
union { uint64_t raw = LLVMGetGlobalValueAddress(Engine, "simple_value");
uint64_t raw; int32_t *usable = (int32_t *) raw;
int32_t *usable;
} valuePointer;
valuePointer.raw = LLVMGetGlobalValueAddress(Engine, "simple_value");
EXPECT_EQ(42, *valuePointer.usable); EXPECT_EQ(42, *usable);
} }
TEST_F(MCJITCAPITest, gfa) { TEST_F(MCJITCAPITest, gfa) {
@ -376,13 +373,10 @@ TEST_F(MCJITCAPITest, gfa) {
buildMCJITEngine(); buildMCJITEngine();
buildAndRunPasses(); buildAndRunPasses();
union { uint64_t raw = LLVMGetFunctionAddress(Engine, "simple_function");
uint64_t raw; int (*usable)() = (int (*)()) raw;
int (*usable)();
} functionPointer;
functionPointer.raw = LLVMGetFunctionAddress(Engine, "simple_function");
EXPECT_EQ(42, functionPointer.usable()); EXPECT_EQ(42, usable());
} }
TEST_F(MCJITCAPITest, custom_memory_manager) { TEST_F(MCJITCAPITest, custom_memory_manager) {