Mercurial > projects > ldc
changeset 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 | 1a93c3da09ef |
children | 6766485fb584 |
files | gen/main.cpp gen/runtime.cpp gen/toobj.cpp |
diffstat | 3 files changed, 27 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/gen/main.cpp Tue Jun 30 22:07:50 2009 +0200 +++ b/gen/main.cpp Fri Jul 03 17:24:35 2009 +0200 @@ -7,6 +7,9 @@ #include "gen/llvm-version.h" #include "llvm/LinkAllVMCore.h" #include "llvm/Linker.h" +#if LLVM_REV >= 74640 +#include "llvm/LLVMContext.h" +#endif #include "llvm/System/Signals.h" #include "llvm/Target/SubtargetFeature.h" #include "llvm/Target/TargetMachine.h" @@ -399,7 +402,11 @@ if (global.errors) fatal(); +#if LLVM_REV >= 74640 + llvm::Module mod("dummy", llvm::getGlobalContext()); +#else llvm::Module mod("dummy"); +#endif // override triple if needed const char* defaultTriple = DEFAULT_TARGET_TRIPLE; @@ -919,7 +926,11 @@ char* name = m->toChars(); char* filename = m->objfile->name->str; +#if LLVM_REV >= 74640 + llvm::Linker linker(name, name, llvm::getGlobalContext()); +#else llvm::Linker linker(name, name); +#endif std::string errormsg; for (int i = 0; i < llvmModules.size(); i++) {
--- a/gen/runtime.cpp Tue Jun 30 22:07:50 2009 +0200 +++ b/gen/runtime.cpp Fri Jul 03 17:24:35 2009 +0200 @@ -1,4 +1,8 @@ #include "gen/llvm.h" +#include "gen/llvm-version.h" +#if LLVM_REV >= 74640 +#include "llvm/LLVMContext.h" +#endif #include "llvm/Module.h" #include "llvm/Attributes.h" #include "llvm/Bitcode/ReaderWriter.h" @@ -149,7 +153,11 @@ static void LLVM_D_BuildRuntimeModule() { Logger::println("building module"); +#if LLVM_REV >= 74640 + M = new llvm::Module("ldc internal runtime", llvm::getGlobalContext()); +#else M = new llvm::Module("ldc internal runtime"); +#endif Logger::println("building basic types"); const LLType* voidTy = LLType::VoidTy;
--- a/gen/toobj.cpp Tue Jun 30 22:07:50 2009 +0200 +++ b/gen/toobj.cpp Fri Jul 03 17:24:35 2009 +0200 @@ -11,8 +11,12 @@ #include <fstream> #include "gen/llvm.h" +#include "gen/llvm-version.h" #include "llvm/Analysis/Verifier.h" #include "llvm/Bitcode/ReaderWriter.h" +#if LLVM_REV >= 74640 +#include "llvm/LLVMContext.h" +#endif #include "llvm/Module.h" #include "llvm/ModuleProvider.h" #include "llvm/PassManager.h" @@ -43,7 +47,6 @@ #include "gen/functions.h" #include "gen/irstate.h" #include "gen/llvmhelpers.h" -#include "gen/llvm-version.h" #include "gen/logger.h" #include "gen/optimizer.h" #include "gen/programs.h" @@ -94,7 +97,11 @@ // create a new ir state // TODO look at making the instance static and moving most functionality into IrModule where it belongs +#if LLVM_REV >= 74640 + IRState ir(new llvm::Module(mname, llvm::getGlobalContext())); +#else IRState ir(new llvm::Module(mname)); +#endif gIR = &ir; ir.dmodule = this;