Changeset 583:12bda38ea366
- 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
| r580 |
r583 |
|
| 41 | 41 | |
|---|
| 42 | 42 | void getenv_setargv(const char *envvar, int *pargc, char** *pargv); |
|---|
| 43 | | |
|---|
| 44 | | // llvmdc |
|---|
| 45 | | void findDefaultTarget(); |
|---|
| 46 | 43 | |
|---|
| 47 | 44 | Global global; |
|---|
| … | … | |
| 754 | 751 | |
|---|
| 755 | 752 | 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 |
|---|
| 757 | 765 | } |
|---|
| 758 | 766 | |
|---|
| r528 |
r583 |
|
| 1484 | 1484 | ////////////////////////////////////////////////////////////////////////////////////////// |
|---|
| 1485 | 1485 | |
|---|
| 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 | | |
|---|
| 1503 | 1486 | LLValue* DtoBoolean(Loc& loc, DValue* dval) |
|---|
| 1504 | 1487 | { |
|---|
| r580 |
r583 |
|
| 96 | 96 | ir.module->setDataLayout(global.params.data_layout); |
|---|
| 97 | 97 | |
|---|
| 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); |
|---|
| 107 | 99 | |
|---|
| 108 | 100 | // debug info |
|---|