Mercurial > projects > ldc
changeset 583:12bda38ea366
Fixed choosing default target machine without needing to link in targets.
author | Tomas Lindquist Olsen <tomas.l.olsen@gmail.com> |
---|---|
date | Sun, 07 Sep 2008 17:44:25 -0700 |
parents | 723806dc48d8 |
children | c7d7e2282ba3 |
files | dmd/mars.c gen/llvmhelpers.cpp gen/toobj.cpp |
diffstat | 3 files changed, 13 insertions(+), 30 deletions(-) [+] |
line wrap: on
line diff
--- 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) {
--- 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<char*>(e->Name); - } -} - -////////////////////////////////////////////////////////////////////////////////////////// - LLValue* DtoBoolean(Loc& loc, DValue* dval) { Type* dtype = dval->getType()->toBasetype();
--- 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<llvm::TargetMachine> 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) {