Wiki Roadmap Timeline Tickets New Ticket Source Search Help / Guide About Trac Login

Changeset 583:12bda38ea366

Show
Ignore:
Timestamp:
09/07/08 20:44:25 (4 months ago)
Author:
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
branch:
default
Message:

Fixed choosing default target machine without needing to link in targets.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • dmd/mars.c

    r580 r583  
    4141 
    4242void getenv_setargv(const char *envvar, int *pargc, char** *pargv); 
    43  
    44 // llvmdc 
    45 void findDefaultTarget(); 
    4643 
    4744Global global; 
     
    754751 
    755752    if (global.params.llvmArch == 0) { 
    756         findDefaultTarget(); 
     753    #if defined(__x86_64__) || defined(_M_X64) 
     754        global.params.llvmArch = "x86-64"; 
     755    #elif defined(__i386__) || defined(_M_IX86) 
     756        global.params.llvmArch = "x86"; 
     757    #elif defined(__ppc__) || defined(_M_PPC) 
     758        if (global.params.is64bit) 
     759            global.params.llvmArch = "ppc64"; 
     760        else 
     761            global.params.llvmArch = "ppc32"; 
     762    #else 
     763    #error 
     764    #endif 
    757765    } 
    758766 
  • gen/llvmhelpers.cpp

    r528 r583  
    14841484////////////////////////////////////////////////////////////////////////////////////////// 
    14851485 
    1486 void findDefaultTarget() 
    1487 { 
    1488     std::string err_str; 
    1489     const llvm::TargetMachineRegistry::entry* e = llvm::TargetMachineRegistry::getClosestTargetForJIT(err_str); 
    1490     if (e == 0) 
    1491     { 
    1492         error("Failed to find a default target machine: %s", err_str.c_str()); 
    1493         fatal(); 
    1494     } 
    1495     else 
    1496     { 
    1497         global.params.llvmArch = const_cast<char*>(e->Name); 
    1498     } 
    1499 } 
    1500  
    1501 ////////////////////////////////////////////////////////////////////////////////////////// 
    1502  
    15031486LLValue* DtoBoolean(Loc& loc, DValue* dval) 
    15041487{ 
  • gen/toobj.cpp

    r580 r583  
    9696    ir.module->setDataLayout(global.params.data_layout); 
    9797 
    98     // heavily inspired by tools/llc/llc.cpp:200-230 
    99     const llvm::TargetMachineRegistry::entry* targetEntry; 
    100     std::string targetError; 
    101     targetEntry = llvm::TargetMachineRegistry::getClosestStaticTargetForModule(*ir.module, targetError); 
    102     assert(targetEntry && "Failed to find a static target for module"); 
    103     std::auto_ptr<llvm::TargetMachine> targetPtr(targetEntry->CtorFn(*ir.module, "")); // TODO: replace "" with features 
    104     assert(targetPtr.get() && "Could not allocate target machine!"); 
    105     llvm::TargetMachine &targetMachine = *targetPtr.get(); 
    106     gTargetData = targetMachine.getTargetData(); 
     98    gTargetData = new llvm::TargetData(global.params.data_layout); 
    10799 
    108100    // debug info 
Copyright © 2008, LDC Development Team.