Add macros to enable support for llvm3.1.

This commit is contained in:
Siu Kwan Lam 2012-12-27 17:10:12 -06:00
commit 5da98dac49

View file

@ -53,7 +53,6 @@
#include "llvm/Support/MemoryBuffer.h" #include "llvm/Support/MemoryBuffer.h"
#include "llvm/Support/CallSite.h" #include "llvm/Support/CallSite.h"
#include "llvm/Support/FormattedStream.h" #include "llvm/Support/FormattedStream.h"
//#include "llvm/Target/TargetData.h"
#include "llvm/Support/TargetRegistry.h" #include "llvm/Support/TargetRegistry.h"
#include "llvm/Support/TargetSelect.h" #include "llvm/Support/TargetSelect.h"
#include "llvm/Support/Host.h" #include "llvm/Support/Host.h"
@ -75,8 +74,15 @@
#include "llvm/Linker.h" #include "llvm/Linker.h"
#include "llvm/Support/SourceMgr.h" #include "llvm/Support/SourceMgr.h"
#include <llvm/InlineAsm.h> #include <llvm/InlineAsm.h>
#include <llvm/Support/PassNameParser.h>
#if LLVM_VERSION_MAJOR >= 3 && LLVM_VERSION_MINOR >= 2
#include "llvm/DataLayout.h"
#else
#include "llvm/Target/TargetData.h"
#endif
// LLVM-C includes // LLVM-C includes
#include "llvm-c/Core.h" #include "llvm-c/Core.h"
#include "llvm-c/ExecutionEngine.h" #include "llvm-c/ExecutionEngine.h"
@ -105,7 +111,7 @@ class PassRegistryPrinter : public llvm::PassRegistrationListener{
public: public:
std::ostringstream stringstream; std::ostringstream stringstream;
void passEnumerate(const llvm::PassInfo * pass_info){ inline virtual void passEnumerate(const llvm::PassInfo * pass_info){
stringstream << pass_info->getPassArgument() stringstream << pass_info->getPassArgument()
<< "\t" << "\t"
<< pass_info->getPassName() << pass_info->getPassName()
@ -355,13 +361,21 @@ unsigned char* LLVMTargetMachineEmitFile(LLVMTargetMachineRef tmref,
TargetMachine * tm = unwrap(tmref); TargetMachine * tm = unwrap(tmref);
PassManager pm; PassManager pm;
#if LLVM_VERSION_MAJOR >= 3 && LLVM_VERSION_MINOR >= 2
if (!tm->getDataLayout()){ if (!tm->getDataLayout()){
error = "No target data in target machine"; error = "No target data in target machine";
return NULL; return NULL;
} }
pm.add(new DataLayout(*tm->getDataLayout())); pm.add(new DataLayout(*tm->getDataLayout()));
#else
if (!tm->getTargetData()){
error = "No target data in target machine";
return NULL;
}
pm.add(new TargetData(*tm->getTargetData()));
#endif
bool failed; bool failed;
if( assembly ) { if( assembly ) {
@ -427,7 +441,11 @@ void LLVMPrintRegisteredTargetsForVersion(){
LLVMTargetDataRef LLVMTargetMachineGetTargetData(LLVMTargetMachineRef tm) LLVMTargetDataRef LLVMTargetMachineGetTargetData(LLVMTargetMachineRef tm)
{ {
using namespace llvm; using namespace llvm;
#if LLVM_VERSION_MAJOR >= 3 && LLVM_VERSION_MINOR >= 2
return wrap(new DataLayout(*unwrap(tm)->getDataLayout())); return wrap(new DataLayout(*unwrap(tm)->getDataLayout()));
#else
return wrap(new TargetData(*unwrap(tm)->getTargetData()));
#endif
} }
unsigned char* LLVMGetNativeCodeFromModule(LLVMModuleRef module, int assembly, unsigned char* LLVMGetNativeCodeFromModule(LLVMModuleRef module, int assembly,