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;