From 56f4f48c47983432670d7aaa18614a98bd35961a Mon Sep 17 00:00:00 2001 From: Antti Ajanki Date: Sat, 18 May 2013 11:36:52 +0300 Subject: [PATCH 01/29] Support for LLVM 3.3 --- conf/FindLLVM.cmake | 6 ++++++ src/scripting/abc.cpp | 15 +++++++++++---- src/scripting/abc_codesynt.cpp | 25 ++++++++++++++++++------- 3 files changed, 35 insertions(+), 11 deletions(-) diff --git a/conf/FindLLVM.cmake b/conf/FindLLVM.cmake index ab8f95d..c94d7d4 100644 --- a/conf/FindLLVM.cmake +++ b/conf/FindLLVM.cmake @@ -53,6 +53,7 @@ else (LLVM_INCLUDE_DIR) /usr/lib/llvm-3.0/bin /usr/lib/llvm-3.1/bin /usr/lib/llvm-3.2/bin + /usr/lib/llvm-3.3/bin ) find_program(LLVM_GCC_EXECUTABLE @@ -170,11 +171,16 @@ else (LLVM_INCLUDE_DIR) set(CMAKE_REQUIRED_INCLUDES ${LLVM_INCLUDE_DIR}) check_include_file_cxx("llvm/DataLayout.h" HAVE_DATALAYOUT_H) + check_include_file_cxx("llvm/IR/DataLayout.h" HAVE_IR_DATALAYOUT_H) unset(CMAKE_REQUIRED_INCLUDES) MESSAGE(STATUS "HAVE_DATALAYOUT_H: " ${HAVE_DATALAYOUT_H}) + MESSAGE(STATUS "HAVE_IR_DATALAYOUT_H: " ${HAVE_IR_DATALAYOUT_H}) IF(HAVE_DATALAYOUT_H) ADD_DEFINITIONS(-DHAVE_DATALAYOUT_H) ENDIF(HAVE_DATALAYOUT_H) + IF(HAVE_IR_DATALAYOUT_H) + ADD_DEFINITIONS(-DHAVE_IR_DATALAYOUT_H) + ENDIF(HAVE_IR_DATALAYOUT_H) exec_program(${LLVM_CONFIG_EXECUTABLE} ARGS --cxxflags OUTPUT_VARIABLE LLVM_COMPILE_FLAGS ) MESSAGE(STATUS "LLVM CXX flags: " ${LLVM_COMPILE_FLAGS}) diff --git a/src/scripting/abc.cpp b/src/scripting/abc.cpp index 608fe01..49f2e06 100644 --- a/src/scripting/abc.cpp +++ b/src/scripting/abc.cpp @@ -23,12 +23,19 @@ #include "compat.h" -#include #include #include #include -#include -#ifdef HAVE_DATALAYOUT_H +#ifdef HAVE_IR_DATALAYOUT_H +# include +# include +#else +# include +# include +#endif +#ifdef HAVE_IR_DATALAYOUT_H +# include +#elif defined HAVE_DATALAYOUT_H # include #else # include @@ -1516,7 +1523,7 @@ void ABCVm::Run(ABCVm* th) assert_and_throw(th->ex); th->FPM=new llvm::FunctionPassManager(th->module); -#ifdef HAVE_DATALAYOUT_H +#if defined HAVE_DATALAYOUT_H || defined HAVE_IR_DATALAYOUT_H th->FPM->add(new llvm::DataLayout(*th->ex->getDataLayout())); #else th->FPM->add(new llvm::TargetData(*th->ex->getTargetData())); diff --git a/src/scripting/abc_codesynt.cpp b/src/scripting/abc_codesynt.cpp index 2018be3..bb8e9a5 100644 --- a/src/scripting/abc_codesynt.cpp +++ b/src/scripting/abc_codesynt.cpp @@ -25,18 +25,29 @@ #endif #include "compat.h" -#include -#include #include #include -#include -#ifdef HAVE_IRBUILDER_H +#ifdef HAVE_IR_DATALAYOUT_H +# include +# include +# include +# include +#else +# include +# include +# include +# include +#endif +#ifdef HAVE_IR_DATALAYOUT_H +# include +#elif defined HAVE_IRBUILDER_H # include #else # include #endif -#include -#ifdef HAVE_DATALAYOUT_H +#ifdef HAVE_IR_DATALAYOUT_H +# include +#elif defined HAVE_DATALAYOUT_H # include #else # include @@ -279,7 +290,7 @@ void ABCVm::registerFunctions() llvm::FunctionType* FT=NULL; //Create types -#ifdef HAVE_DATALAYOUT_H +#if defined HAVE_DATALAYOUT_H || defined HAVE_IR_DATALAYOUT_H ptr_type=ex->getDataLayout()->getIntPtrType(llvm_context()); #else ptr_type=ex->getTargetData()->getIntPtrType(llvm_context()); -- 1.8.3