Mercurial > projects > ldc
comparison gen/main.cpp @ 1521:982eb70e83b2
Fix build for LLVM >= r74640
Some LLVM objects now take a 'Context' to make multi-threaded apps easier.
Since we're not multi-threaded it's safe to use llvm::getGlobalContext()
which gives us the same behavior as we had before.
author | Benjamin Kramer <benny.kra@gmail.com> |
---|---|
date | Fri, 03 Jul 2009 17:24:35 +0200 |
parents | 26d061e61b02 |
children | b265fb6ce15b |
comparison
equal
deleted
inserted
replaced
1520:1a93c3da09ef | 1521:982eb70e83b2 |
---|---|
5 | 5 |
6 #include "gen/llvm.h" | 6 #include "gen/llvm.h" |
7 #include "gen/llvm-version.h" | 7 #include "gen/llvm-version.h" |
8 #include "llvm/LinkAllVMCore.h" | 8 #include "llvm/LinkAllVMCore.h" |
9 #include "llvm/Linker.h" | 9 #include "llvm/Linker.h" |
10 #if LLVM_REV >= 74640 | |
11 #include "llvm/LLVMContext.h" | |
12 #endif | |
10 #include "llvm/System/Signals.h" | 13 #include "llvm/System/Signals.h" |
11 #include "llvm/Target/SubtargetFeature.h" | 14 #include "llvm/Target/SubtargetFeature.h" |
12 #include "llvm/Target/TargetMachine.h" | 15 #include "llvm/Target/TargetMachine.h" |
13 #include "llvm/Target/TargetOptions.h" | 16 #include "llvm/Target/TargetOptions.h" |
14 #include "llvm/Target/TargetMachineRegistry.h" | 17 #include "llvm/Target/TargetMachineRegistry.h" |
397 else if ((m32bits || m64bits) && (mArch != 0 || !mTargetTriple.empty())) | 400 else if ((m32bits || m64bits) && (mArch != 0 || !mTargetTriple.empty())) |
398 error("-m32 and -m64 switches cannot be used together with -march and -mtriple switches"); | 401 error("-m32 and -m64 switches cannot be used together with -march and -mtriple switches"); |
399 if (global.errors) | 402 if (global.errors) |
400 fatal(); | 403 fatal(); |
401 | 404 |
405 #if LLVM_REV >= 74640 | |
406 llvm::Module mod("dummy", llvm::getGlobalContext()); | |
407 #else | |
402 llvm::Module mod("dummy"); | 408 llvm::Module mod("dummy"); |
409 #endif | |
403 | 410 |
404 // override triple if needed | 411 // override triple if needed |
405 const char* defaultTriple = DEFAULT_TARGET_TRIPLE; | 412 const char* defaultTriple = DEFAULT_TARGET_TRIPLE; |
406 if ((sizeof(void*) == 4 && m64bits) || (sizeof(void*) == 8 && m32bits)) | 413 if ((sizeof(void*) == 4 && m64bits) || (sizeof(void*) == 8 && m32bits)) |
407 { | 414 { |
917 { | 924 { |
918 Module* m = (Module*)modules.data[0]; | 925 Module* m = (Module*)modules.data[0]; |
919 char* name = m->toChars(); | 926 char* name = m->toChars(); |
920 char* filename = m->objfile->name->str; | 927 char* filename = m->objfile->name->str; |
921 | 928 |
929 #if LLVM_REV >= 74640 | |
930 llvm::Linker linker(name, name, llvm::getGlobalContext()); | |
931 #else | |
922 llvm::Linker linker(name, name); | 932 llvm::Linker linker(name, name); |
933 #endif | |
923 std::string errormsg; | 934 std::string errormsg; |
924 for (int i = 0; i < llvmModules.size(); i++) | 935 for (int i = 0; i < llvmModules.size(); i++) |
925 { | 936 { |
926 #ifdef USE_METADATA | 937 #ifdef USE_METADATA |
927 //FIXME: workaround for llvm metadata bug: | 938 //FIXME: workaround for llvm metadata bug: |