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: