diff options
author | Chris Lattner <sabre@nondot.org> | 2003-08-24 14:02:47 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2003-08-24 14:02:47 +0000 |
commit | 1543e40cea50d244979f0667f453cf3466a6106c (patch) | |
tree | 566b386f7ebd662bfa437bd824c43387428584e8 | |
parent | bb43350e32c949ff9465eb898a2ed5ad9d1f3f9f (diff) | |
download | external_llvm-1543e40cea50d244979f0667f453cf3466a6106c.zip external_llvm-1543e40cea50d244979f0667f453cf3466a6106c.tar.gz external_llvm-1543e40cea50d244979f0667f453cf3466a6106c.tar.bz2 |
Add preliminary support for "any" pointersize/endianness. This will need
to change soon though.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8123 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/ExecutionEngine/ExecutionEngine.cpp | 8 | ||||
-rw-r--r-- | lib/ExecutionEngine/Interpreter/ExternalFunctions.cpp | 3 | ||||
-rw-r--r-- | tools/lli/lli.cpp | 6 |
3 files changed, 10 insertions, 7 deletions
diff --git a/lib/ExecutionEngine/ExecutionEngine.cpp b/lib/ExecutionEngine/ExecutionEngine.cpp index 9b51e3c..e376b85 100644 --- a/lib/ExecutionEngine/ExecutionEngine.cpp +++ b/lib/ExecutionEngine/ExecutionEngine.cpp @@ -132,7 +132,7 @@ 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()) + case Type::PointerTyID: if (CurMod.getPointerSize() != Module::Pointer64) goto Store4BytesLittleEndian; case Type::DoubleTyID: case Type::ULongTyID: @@ -165,7 +165,7 @@ 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()) + case Type::PointerTyID: if (CurMod.getPointerSize() != Module::Pointer64) goto Store4BytesBigEndian; case Type::DoubleTyID: case Type::ULongTyID: @@ -204,7 +204,7 @@ GenericValue ExecutionEngine::LoadValueFromMemory(GenericValue *Ptr, ((unsigned)Ptr->Untyped[2] << 16) | ((unsigned)Ptr->Untyped[3] << 24); break; - case Type::PointerTyID: if (getModule().has32BitPointers()) + case Type::PointerTyID: if (CurMod.getPointerSize() != Module::Pointer64) goto Load4BytesLittleEndian; case Type::DoubleTyID: case Type::ULongTyID: @@ -238,7 +238,7 @@ GenericValue ExecutionEngine::LoadValueFromMemory(GenericValue *Ptr, ((unsigned)Ptr->Untyped[1] << 16) | ((unsigned)Ptr->Untyped[0] << 24); break; - case Type::PointerTyID: if (getModule().has32BitPointers()) + case Type::PointerTyID: if (CurMod.getPointerSize() != Module::Pointer64) goto Load4BytesBigEndian; case Type::DoubleTyID: case Type::ULongTyID: diff --git a/lib/ExecutionEngine/Interpreter/ExternalFunctions.cpp b/lib/ExecutionEngine/Interpreter/ExternalFunctions.cpp index 73deed9..d24557a 100644 --- a/lib/ExecutionEngine/Interpreter/ExternalFunctions.cpp +++ b/lib/ExecutionEngine/Interpreter/ExternalFunctions.cpp @@ -308,7 +308,8 @@ GenericValue lle_X_sprintf(FunctionType *M, const vector<GenericValue> &Args) { case 'u': case 'o': case 'x': case 'X': if (HowLong >= 1) { - if (HowLong == 1 && TheInterpreter->getModule().has64BitPointers() && + if (HowLong == 1 && + TheInterpreter->getModule().getPointerSize()==Module::Pointer64 && sizeof(long) < sizeof(long long)) { // Make sure we use %lld with a 64 bit argument because we might be // compiling LLI on a 32 bit compiler. diff --git a/tools/lli/lli.cpp b/tools/lli/lli.cpp index 7a0925d..6c537ec 100644 --- a/tools/lli/lli.cpp +++ b/tools/lli/lli.cpp @@ -75,8 +75,10 @@ int main(int argc, char** argv, const char ** envp) { } #endif - unsigned Config = (M->isLittleEndian() ? TM::LittleEndian : TM::BigEndian) | - (M->has32BitPointers() ? TM::PtrSize32 : TM::PtrSize64); + // FIXME: in adddition to being gross, this is also wrong: This should use the + // pointersize/endianness of the host if the pointer size is not specified!! + unsigned Config = (M->getEndianness() != Module::BigEndian ? TM::LittleEndian : TM::BigEndian) | + (M->getPointerSize() != Module::Pointer64 ? TM::PtrSize32 : TM::PtrSize64); ExecutionEngine *EE = 0; // If there is nothing that is forcing us to use the interpreter, make a JIT. |