diff --git a/dmd/mars.c b/dmd/mars.c index 8e2946922e..84a4321034 100644 --- a/dmd/mars.c +++ b/dmd/mars.c @@ -41,9 +41,6 @@ void getenv_setargv(const char *envvar, int *pargc, char** *pargv); -// llvmdc -void findDefaultTarget(); - Global global; Global::Global() @@ -753,7 +750,18 @@ int main(int argc, char *argv[]) bool allowForceEndianness = false; if (global.params.llvmArch == 0) { - findDefaultTarget(); + #if defined(__x86_64__) || defined(_M_X64) + global.params.llvmArch = "x86-64"; + #elif defined(__i386__) || defined(_M_IX86) + global.params.llvmArch = "x86"; + #elif defined(__ppc__) || defined(_M_PPC) + if (global.params.is64bit) + global.params.llvmArch = "ppc64"; + else + global.params.llvmArch = "ppc32"; + #else + #error + #endif } if (strcmp(global.params.llvmArch,"x86")==0) { diff --git a/gen/llvmhelpers.cpp b/gen/llvmhelpers.cpp index b86fe2bd72..282c327a5e 100644 --- a/gen/llvmhelpers.cpp +++ b/gen/llvmhelpers.cpp @@ -1483,23 +1483,6 @@ LLConstant* DtoTypeInfoOf(Type* type, bool base) ////////////////////////////////////////////////////////////////////////////////////////// -void findDefaultTarget() -{ - std::string err_str; - const llvm::TargetMachineRegistry::entry* e = llvm::TargetMachineRegistry::getClosestTargetForJIT(err_str); - if (e == 0) - { - error("Failed to find a default target machine: %s", err_str.c_str()); - fatal(); - } - else - { - global.params.llvmArch = const_cast(e->Name); - } -} - -////////////////////////////////////////////////////////////////////////////////////////// - LLValue* DtoBoolean(Loc& loc, DValue* dval) { Type* dtype = dval->getType()->toBasetype(); diff --git a/gen/toobj.cpp b/gen/toobj.cpp index dfd2ac273d..fe0f29d5e9 100644 --- a/gen/toobj.cpp +++ b/gen/toobj.cpp @@ -95,15 +95,7 @@ void Module::genobjfile(int multiobj) ir.module->setTargetTriple(target_triple); ir.module->setDataLayout(global.params.data_layout); - // heavily inspired by tools/llc/llc.cpp:200-230 - const llvm::TargetMachineRegistry::entry* targetEntry; - std::string targetError; - targetEntry = llvm::TargetMachineRegistry::getClosestStaticTargetForModule(*ir.module, targetError); - assert(targetEntry && "Failed to find a static target for module"); - std::auto_ptr targetPtr(targetEntry->CtorFn(*ir.module, "")); // TODO: replace "" with features - assert(targetPtr.get() && "Could not allocate target machine!"); - llvm::TargetMachine &targetMachine = *targetPtr.get(); - gTargetData = targetMachine.getTargetData(); + gTargetData = new llvm::TargetData(global.params.data_layout); // debug info if (global.params.symdebug) {