diff options
Diffstat (limited to 'lib/ExecutionEngine/Interpreter')
-rw-r--r-- | lib/ExecutionEngine/Interpreter/Interpreter.cpp | 23 |
1 files changed, 11 insertions, 12 deletions
diff --git a/lib/ExecutionEngine/Interpreter/Interpreter.cpp b/lib/ExecutionEngine/Interpreter/Interpreter.cpp index 4728c95b74..d39b5e1cf6 100644 --- a/lib/ExecutionEngine/Interpreter/Interpreter.cpp +++ b/lib/ExecutionEngine/Interpreter/Interpreter.cpp @@ -39,18 +39,17 @@ ExecutionEngine *Interpreter::create(ModuleProvider *MP) { return 0; // error materializing the module. } - if (M->getEndianness() == Module::AnyEndianness) { - int Test = 0; - *(char*)&Test = 1; // Return true if the host is little endian - bool isLittleEndian = (Test == 1); - M->setEndianness(isLittleEndian ? Module::LittleEndian : Module::BigEndian); - } - - if (M->getPointerSize() == Module::AnyPointerSize) { - // Follow host. - bool Ptr64 = sizeof(void*) == 8; - M->setPointerSize(Ptr64 ? Module::Pointer64 : Module::Pointer32); - } + // FIXME: This should probably compute the entire data layout + std::string DataLayout; + int Test = 0; + *(char*)&Test = 1; // Return true if the host is little endian + bool isLittleEndian = (Test == 1); + DataLayout.append(isLittleEndian ? "e" : "E"); + + bool Ptr64 = sizeof(void*) == 8; + DataLayout.append(Ptr64 ? "-p:64:64" : "-p:32:32"); + + M->setDataLayout(DataLayout); return new Interpreter(M); } |