diff options
author | Chris Lattner <sabre@nondot.org> | 2003-04-23 20:41:01 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2003-04-23 20:41:01 +0000 |
commit | 2be50797a1391278489fa698aa8e17d3f8b04a59 (patch) | |
tree | 1217f701a8dbf3c57ae1b20abcd90aba5a7f50ea /lib/ExecutionEngine | |
parent | a4dd4e2de8656ee9e51e6249b95a02ab5fe9c81a (diff) | |
download | external_llvm-2be50797a1391278489fa698aa8e17d3f8b04a59.zip external_llvm-2be50797a1391278489fa698aa8e17d3f8b04a59.tar.gz external_llvm-2be50797a1391278489fa698aa8e17d3f8b04a59.tar.bz2 |
Fix bug where pointers were assumed to always be 64 bits in size!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5890 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/ExecutionEngine')
-rw-r--r-- | lib/ExecutionEngine/ExecutionEngine.cpp | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/lib/ExecutionEngine/ExecutionEngine.cpp b/lib/ExecutionEngine/ExecutionEngine.cpp index 336e6a7..a6f7126 100644 --- a/lib/ExecutionEngine/ExecutionEngine.cpp +++ b/lib/ExecutionEngine/ExecutionEngine.cpp @@ -92,6 +92,7 @@ void ExecutionEngine::StoreValueToMemory(GenericValue Val, GenericValue *Ptr, case Type::ShortTyID: Ptr->Untyped[0] = Val.UShortVal & 255; Ptr->Untyped[1] = (Val.UShortVal >> 8) & 255; break; + Store4BytesLittleEndian: case Type::FloatTyID: case Type::UIntTyID: case Type::IntTyID: Ptr->Untyped[0] = Val.UIntVal & 255; @@ -99,10 +100,11 @@ void ExecutionEngine::StoreValueToMemory(GenericValue Val, GenericValue *Ptr, Ptr->Untyped[2] = (Val.UIntVal >> 16) & 255; Ptr->Untyped[3] = (Val.UIntVal >> 24) & 255; break; + case Type::PointerTyID: if (CurMod.has32BitPointers()) + goto Store4BytesLittleEndian; case Type::DoubleTyID: case Type::ULongTyID: - case Type::LongTyID: - case Type::PointerTyID: Ptr->Untyped[0] = Val.ULongVal & 255; + case Type::LongTyID: Ptr->Untyped[0] = Val.ULongVal & 255; Ptr->Untyped[1] = (Val.ULongVal >> 8) & 255; Ptr->Untyped[2] = (Val.ULongVal >> 16) & 255; Ptr->Untyped[3] = (Val.ULongVal >> 24) & 255; @@ -123,6 +125,7 @@ void ExecutionEngine::StoreValueToMemory(GenericValue Val, GenericValue *Ptr, case Type::ShortTyID: Ptr->Untyped[1] = Val.UShortVal & 255; Ptr->Untyped[0] = (Val.UShortVal >> 8) & 255; break; + Store4BytesBigEndian: case Type::FloatTyID: case Type::UIntTyID: case Type::IntTyID: Ptr->Untyped[3] = Val.UIntVal & 255; @@ -130,10 +133,11 @@ void ExecutionEngine::StoreValueToMemory(GenericValue Val, GenericValue *Ptr, Ptr->Untyped[1] = (Val.UIntVal >> 16) & 255; Ptr->Untyped[0] = (Val.UIntVal >> 24) & 255; break; + case Type::PointerTyID: if (CurMod.has32BitPointers()) + goto Store4BytesBigEndian; case Type::DoubleTyID: case Type::ULongTyID: - case Type::LongTyID: - case Type::PointerTyID: Ptr->Untyped[7] = Val.ULongVal & 255; + case Type::LongTyID: Ptr->Untyped[7] = Val.ULongVal & 255; Ptr->Untyped[6] = (Val.ULongVal >> 8) & 255; Ptr->Untyped[5] = (Val.ULongVal >> 16) & 255; Ptr->Untyped[4] = (Val.ULongVal >> 24) & 255; |