# HG changeset patch # User Tomas Lindquist Olsen # Date 1220834665 25200 # Node ID 12bda38ea3662e08feb18d3f524c5a193c0c4459 # Parent 723806dc48d8ed34d9d85ee7caf42d873641b69e Fixed choosing default target machine without needing to link in targets. diff -r 723806dc48d8 -r 12bda38ea366 dmd/mars.c --- a/dmd/mars.c Sun Sep 07 16:16:10 2008 +0200 +++ b/dmd/mars.c Sun Sep 07 17:44:25 2008 -0700 @@ -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 @@ 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 -r 723806dc48d8 -r 12bda38ea366 gen/llvmhelpers.cpp --- a/gen/llvmhelpers.cpp Sun Sep 07 16:16:10 2008 +0200 +++ b/gen/llvmhelpers.cpp Sun Sep 07 17:44:25 2008 -0700 @@ -1483,23 +1483,6 @@ ////////////////////////////////////////////////////////////////////////////////////////// -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 -r 723806dc48d8 -r 12bda38ea366 gen/toobj.cpp --- a/gen/toobj.cpp Sun Sep 07 16:16:10 2008 +0200 +++ b/gen/toobj.cpp Sun Sep 07 17:44:25 2008 -0700 @@ -95,15 +95,7 @@ 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) {