Move all llvm relative includes to llvm_includes.hpp. Signed-off-by: Yang Rong --- backend/src/backend/gen_program.cpp | 4 + backend/src/llvm/ExpandConstantExpr.cpp | 7 +- backend/src/llvm/ExpandLargeIntegers.cpp | 21 +--- backend/src/llvm/ExpandUtils.cpp | 8 +- backend/src/llvm/PromoteIntegers.cpp | 10 +- backend/src/llvm/StripAttributes.cpp | 9 +- backend/src/llvm/llvm_barrier_nodup.cpp | 25 +---- backend/src/llvm/llvm_bitcode_link.cpp | 20 +--- backend/src/llvm/llvm_gen_backend.cpp | 93 +++-------------- backend/src/llvm/llvm_gen_backend.hpp | 4 - backend/src/llvm/llvm_includes.hpp | 125 +++++++++++++++++++++++ backend/src/llvm/llvm_intrinsic_lowering.cpp | 24 +---- backend/src/llvm/llvm_loadstore_optimization.cpp | 36 +------ backend/src/llvm/llvm_passes.cpp | 70 +------------ backend/src/llvm/llvm_printf_parser.cpp | 34 +----- backend/src/llvm/llvm_sampler_fix.cpp | 21 +--- backend/src/llvm/llvm_scalarize.cpp | 35 +------ backend/src/llvm/llvm_to_gen.cpp | 78 ++++++-------- backend/src/llvm/llvm_unroll.cpp | 36 ++----- 19 files changed, 207 insertions(+), 453 deletions(-) create mode 100644 backend/src/llvm/llvm_includes.hpp diff --git a/backend/src/backend/gen_program.cpp b/backend/src/backend/gen_program.cpp index 3c4983e..73d78f8 100644 --- a/backend/src/backend/gen_program.cpp +++ b/backend/src/backend/gen_program.cpp @@ -402,7 +402,11 @@ namespace gbe { llvm::Module* src = (llvm::Module*)((GenProgram*)src_program)->module; llvm::Module* dst = (llvm::Module*)((GenProgram*)dst_program)->module; +#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 7 + if (LLVMLinkModules(wrap(dst), wrap(src), LLVMLinkerPreserveSource_Removed, &errMsg)) { +#else if (LLVMLinkModules(wrap(dst), wrap(src), LLVMLinkerPreserveSource, &errMsg)) { +#endif if (err != NULL && errSize != NULL && stringSize > 0u) { strncpy(err, errMsg, stringSize-1); err[stringSize-1] = '\0'; diff --git a/backend/src/llvm/ExpandConstantExpr.cpp b/backend/src/llvm/ExpandConstantExpr.cpp index 5c5934a..c6f57b8 100644 --- a/backend/src/llvm/ExpandConstantExpr.cpp +++ b/backend/src/llvm/ExpandConstantExpr.cpp @@ -77,12 +77,7 @@ //===----------------------------------------------------------------------===// #include - -#include "llvm/IR/IRBuilder.h" -#include "llvm/IR/Constants.h" -#include "llvm/IR/Function.h" -#include "llvm/IR/Instructions.h" -#include "llvm/Pass.h" +#include "llvm_includes.hpp" #include "llvm_gen_backend.hpp" using namespace llvm; diff --git a/backend/src/llvm/ExpandLargeIntegers.cpp b/backend/src/llvm/ExpandLargeIntegers.cpp index f7e59a5..20fdda9 100644 --- a/backend/src/llvm/ExpandLargeIntegers.cpp +++ b/backend/src/llvm/ExpandLargeIntegers.cpp @@ -86,24 +86,9 @@ // 2. OR x, 0 can be optimized as x. And x, 0 can be optimized as 0. //===----------------------------------------------------------------------===// -#include "llvm/ADT/DenseMap.h" -#include "llvm/ADT/PostOrderIterator.h" -#include "llvm/ADT/STLExtras.h" -#include "llvm/ADT/SmallVector.h" -#if LLVM_VERSION_MINOR >= 5 -#include "llvm/IR/CFG.h" -#else -#include "llvm/Support/CFG.h" -#endif -#include "llvm/IR/DataLayout.h" -#include "llvm/IR/DerivedTypes.h" -#include "llvm/IR/Function.h" -#include "llvm/IR/IRBuilder.h" -#include "llvm/IR/Instructions.h" -#include "llvm/Pass.h" -#include "llvm/Support/Debug.h" -#include "llvm/Support/MathExtras.h" -#include "llvm/Support/raw_ostream.h" + +#include "llvm_includes.hpp" + #include "llvm_gen_backend.hpp" using namespace llvm; diff --git a/backend/src/llvm/ExpandUtils.cpp b/backend/src/llvm/ExpandUtils.cpp index e6dfb52..801f969 100644 --- a/backend/src/llvm/ExpandUtils.cpp +++ b/backend/src/llvm/ExpandUtils.cpp @@ -64,12 +64,8 @@ // //===----------------------------------------------------------------------===// -#include "llvm/IR/BasicBlock.h" -#include "llvm/IR/Constants.h" -#include "llvm/IR/Function.h" -#include "llvm/IR/Instructions.h" -#include "llvm/IR/Module.h" -#include "llvm/Support/raw_ostream.h" +#include "llvm_includes.hpp" + #include "llvm_gen_backend.hpp" using namespace llvm; diff --git a/backend/src/llvm/PromoteIntegers.cpp b/backend/src/llvm/PromoteIntegers.cpp index aba42b9..b65440f 100644 --- a/backend/src/llvm/PromoteIntegers.cpp +++ b/backend/src/llvm/PromoteIntegers.cpp @@ -84,14 +84,8 @@ //===----------------------------------------------------------------------===// -#include "llvm/ADT/DenseMap.h" -#include "llvm/ADT/SmallVector.h" -#include "llvm/IR/DerivedTypes.h" -#include "llvm/IR/Function.h" -#include "llvm/IR/Instructions.h" -#include "llvm/IR/IRBuilder.h" -#include "llvm/Pass.h" -#include "llvm/Support/raw_ostream.h" +#include "llvm_includes.hpp" + #include "llvm_gen_backend.hpp" using namespace llvm; diff --git a/backend/src/llvm/StripAttributes.cpp b/backend/src/llvm/StripAttributes.cpp index 05cac17..e6df312 100644 --- a/backend/src/llvm/StripAttributes.cpp +++ b/backend/src/llvm/StripAttributes.cpp @@ -69,14 +69,7 @@ // * Calling conventions from functions and function calls. // -#include "llvm/IR/Function.h" -#include "llvm/Pass.h" - -#if LLVM_VERSION_MINOR >= 5 -#include "llvm/IR/CallSite.h" -#else -#include "llvm/Support/CallSite.h" -#endif +#include "llvm_includes.hpp" #include "llvm_gen_backend.hpp" diff --git a/backend/src/llvm/llvm_barrier_nodup.cpp b/backend/src/llvm/llvm_barrier_nodup.cpp index 19deafc..727e6bd 100644 --- a/backend/src/llvm/llvm_barrier_nodup.cpp +++ b/backend/src/llvm/llvm_barrier_nodup.cpp @@ -28,30 +28,7 @@ * */ -#include "llvm/Config/llvm-config.h" -#if LLVM_VERSION_MINOR <= 2 -#include "llvm/Function.h" -#include "llvm/InstrTypes.h" -#include "llvm/Instructions.h" -#include "llvm/IntrinsicInst.h" -#include "llvm/Module.h" -#else -#include "llvm/IR/Function.h" -#include "llvm/IR/InstrTypes.h" -#include "llvm/IR/Instructions.h" -#include "llvm/IR/IntrinsicInst.h" -#include "llvm/IR/Module.h" -#endif /* LLVM_VERSION_MINOR <= 2 */ -#include "llvm/Pass.h" -#if LLVM_VERSION_MINOR <= 1 -#include "llvm/Support/IRBuilder.h" -#elif LLVM_VERSION_MINOR == 2 -#include "llvm/IRBuilder.h" -#else -#include "llvm/IR/IRBuilder.h" -#endif /* LLVM_VERSION_MINOR <= 1 */ -#include "llvm/Support/raw_ostream.h" -#include "llvm/IR/Attributes.h" +#include "llvm_includes.hpp" #include "llvm/llvm_gen_backend.hpp" #include "sys/map.hpp" diff --git a/backend/src/llvm/llvm_bitcode_link.cpp b/backend/src/llvm/llvm_bitcode_link.cpp index ebf4386..56205bb 100644 --- a/backend/src/llvm/llvm_bitcode_link.cpp +++ b/backend/src/llvm/llvm_bitcode_link.cpp @@ -21,24 +21,11 @@ #include #include #include -#include "llvm/IR/Function.h" -#include "llvm/IR/Instructions.h" -#include "llvm/IR/Module.h" -#include "llvm/IRReader/IRReader.h" -#include "llvm/PassManager.h" -#include "llvm/Pass.h" -#include "llvm/IR/IRBuilder.h" -#include "llvm/Support/FileSystem.h" -#include "llvm/Support/MemoryBuffer.h" -#include "llvm/Bitcode/ReaderWriter.h" -#include "llvm/Transforms/IPO.h" -#include "llvm/Transforms/Utils/Cloning.h" -#include "llvm/Support/SourceMgr.h" #include "sys/cvar.hpp" #include "src/GBEConfig.h" +#include "llvm_includes.hpp" #include "llvm/llvm_gen_backend.hpp" -#include "llvm-c/Linker.h" using namespace llvm; @@ -248,8 +235,11 @@ namespace gbe printf("Fatal Error: link the bitcode error:\n%s\n", errorMsg); return NULL; } - +#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >=7 + llvm::legacy::PassManager passes; +#else llvm::PassManager passes; +#endif passes.add(createInternalizePass(kernels)); passes.add(createGlobalDCEPass()); diff --git a/backend/src/llvm/llvm_gen_backend.cpp b/backend/src/llvm/llvm_gen_backend.cpp index 4905415..4f2fe89 100644 --- a/backend/src/llvm/llvm_gen_backend.cpp +++ b/backend/src/llvm/llvm_gen_backend.cpp @@ -71,86 +71,7 @@ * is intercepted, we just abort */ -#include "llvm/Config/llvm-config.h" -#if LLVM_VERSION_MINOR <= 2 -#include "llvm/CallingConv.h" -#include "llvm/Constants.h" -#include "llvm/DerivedTypes.h" -#include "llvm/Module.h" -#include "llvm/Instructions.h" -#else -#include "llvm/IR/CallingConv.h" -#include "llvm/IR/Constants.h" -#include "llvm/IR/DerivedTypes.h" -#include "llvm/IR/Module.h" -#include "llvm/IR/Instructions.h" -#endif /* LLVM_VERSION_MINOR <= 2 */ -#include "llvm/Pass.h" -#include "llvm/PassManager.h" -#include "llvm/IR/IRBuilder.h" -#if LLVM_VERSION_MINOR <= 2 -#include "llvm/Intrinsics.h" -#include "llvm/IntrinsicInst.h" -#include "llvm/InlineAsm.h" -#else -#include "llvm/IR/Intrinsics.h" -#include "llvm/IR/IntrinsicInst.h" -#include "llvm/IR/InlineAsm.h" -#endif /* LLVM_VERSION_MINOR <= 2 */ -#include "llvm/ADT/StringExtras.h" -#include "llvm/ADT/SmallString.h" -#include "llvm/ADT/STLExtras.h" -#include "llvm/Analysis/ConstantsScanner.h" -#include "llvm/Analysis/LoopInfo.h" -#include "llvm/Analysis/ValueTracking.h" -#include "llvm/CodeGen/Passes.h" -#include "llvm/CodeGen/IntrinsicLowering.h" - -#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >=5 -#include "llvm/IR/Mangler.h" -#else -#include "llvm/Target/Mangler.h" -#endif - -#include "llvm/ADT/PostOrderIterator.h" -#include "llvm/Transforms/Scalar.h" -#include "llvm/MC/MCAsmInfo.h" -#include "llvm/MC/MCContext.h" -#include "llvm/MC/MCInstrInfo.h" -#include "llvm/MC/MCObjectFileInfo.h" -#include "llvm/MC/MCRegisterInfo.h" -#include "llvm/MC/MCSubtargetInfo.h" -#include "llvm/MC/MCSymbol.h" -#if !defined(LLVM_VERSION_MAJOR) || (LLVM_VERSION_MINOR == 1) -#include "llvm/Target/TargetData.h" -#elif LLVM_VERSION_MINOR == 2 -#include "llvm/DataLayout.h" -#else -#include "llvm/IR/DataLayout.h" -#endif - -#if LLVM_VERSION_MINOR >= 5 -#include "llvm/IR/CallSite.h" -#include "llvm/IR/CFG.h" -#else -#include "llvm/Support/CallSite.h" -#include "llvm/Support/CFG.h" -#endif - -#include "llvm/Support/ErrorHandling.h" -#include "llvm/Support/FormattedStream.h" -#if (LLVM_VERSION_MAJOR == 3) && (LLVM_VERSION_MINOR <= 2) -#include "llvm/Support/InstVisitor.h" -#elif LLVM_VERSION_MINOR >= 5 -#include "llvm/IR/InstVisitor.h" -#else -#include "llvm/InstVisitor.h" -#endif -#include "llvm/Support/MathExtras.h" -#include "llvm/Support/TargetRegistry.h" -#include "llvm/Support/Host.h" -#include "llvm/Support/ToolOutputFile.h" -#include "llvm/Support/SourceMgr.h" +#include "llvm_includes.hpp" #include "llvm/llvm_gen_backend.hpp" #include "ir/context.hpp" @@ -527,14 +448,22 @@ namespace gbe TheModule(0), btiBase(BTI_RESERVED_NUM) { +#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >=7 + initializeLoopInfoWrapperPassPass(*PassRegistry::getPassRegistry()); +#else initializeLoopInfoPass(*PassRegistry::getPassRegistry()); +#endif pass = PASS_EMIT_REGISTERS; } virtual const char *getPassName() const { return "Gen Back-End"; } void getAnalysisUsage(AnalysisUsage &AU) const { +#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >=7 + AU.addRequired(); +#else AU.addRequired(); +#endif AU.setPreservesAll(); } @@ -564,7 +493,11 @@ namespace gbe assignBti(F); analyzePointerOrigin(F); +#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >=7 + LI = &getAnalysis().getLoopInfo(); +#else LI = &getAnalysis(); +#endif emitFunction(F); phiMap.clear(); globalPointer.clear(); diff --git a/backend/src/llvm/llvm_gen_backend.hpp b/backend/src/llvm/llvm_gen_backend.hpp index 1f16557..94a377b 100644 --- a/backend/src/llvm/llvm_gen_backend.hpp +++ b/backend/src/llvm/llvm_gen_backend.hpp @@ -30,11 +30,7 @@ #include "llvm/Config/llvm-config.h" #include "llvm/Pass.h" #include "llvm/Analysis/LoopPass.h" -#if LLVM_VERSION_MINOR <= 2 -#include "llvm/Instructions.h" -#else #include "llvm/IR/Instructions.h" -#endif #include "sys/platform.hpp" #include "sys/map.hpp" #include diff --git a/backend/src/llvm/llvm_includes.hpp b/backend/src/llvm/llvm_includes.hpp new file mode 100644 index 0000000..fed3a18 --- /dev/null +++ b/backend/src/llvm/llvm_includes.hpp @@ -0,0 +1,125 @@ +/* + * Copyright © 2012 Intel Corporation + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library. If not, see . + * + * Author: Yang Rong + */ + +/** + * \file llvm_includes.hpp + * \author Yang Rong + */ +#ifndef __GBE_IR_LLVM_INCLUDES_HPP__ +#define __GBE_IR_LLVM_INCLUDES_HPP__ + +#include "llvm/Config/llvm-config.h" + +#include "llvm/IR/BasicBlock.h" +#include "llvm/IR/Constants.h" +#include "llvm/IR/Function.h" +#include "llvm/IR/Instructions.h" +#include "llvm/IR/Module.h" +#include "llvm/IR/IRBuilder.h" +#include "llvm/IR/DataLayout.h" +#include "llvm/IR/DerivedTypes.h" +#include "llvm/IR/InstrTypes.h" +#include "llvm/IR/IntrinsicInst.h" +#include "llvm/IR/Attributes.h" +#include "llvm/IR/CallingConv.h" +#include "llvm/IR/Intrinsics.h" +#include "llvm/IR/InlineAsm.h" +#include "llvm/IR/LLVMContext.h" + +#include "llvm_includes.hpp" + +#include "llvm/Pass.h" +#include "llvm/ADT/DenseMap.h" +#include "llvm/ADT/PostOrderIterator.h" +#include "llvm/ADT/STLExtras.h" +#include "llvm/ADT/SmallVector.h" +#include "llvm/ADT/StringExtras.h" +#include "llvm/ADT/SmallString.h" + +#include "llvm/Analysis/ScalarEvolution.h" +#include "llvm/Analysis/ScalarEvolutionExpressions.h" +#include "llvm/Analysis/CFGPrinter.h" +#include "llvm/Analysis/LoopPass.h" +#include "llvm/Analysis/TargetTransformInfo.h" +#include "llvm/Analysis/LoopInfo.h" +#include "llvm/Analysis/ValueTracking.h" +#include "llvm/Analysis/Passes.h" + +#include "llvm/Support/raw_ostream.h" +#include "llvm/Support/Debug.h" +#include "llvm/Support/MathExtras.h" +#include "llvm/Support/FileSystem.h" +#include "llvm/Support/MemoryBuffer.h" +#include "llvm/Support/SourceMgr.h" +#include "llvm/Support/ErrorHandling.h" +#include "llvm/Support/FormattedStream.h" +#include "llvm/Support/TargetRegistry.h" +#include "llvm/Support/Host.h" +#include "llvm/Support/ToolOutputFile.h" + +#include "llvm-c/Linker.h" +#include "llvm/IRReader/IRReader.h" +#include "llvm/Bitcode/ReaderWriter.h" +#include "llvm/Transforms/IPO.h" +#include "llvm/Transforms/Utils/Cloning.h" + +#include "llvm/CodeGen/Passes.h" +#include "llvm/CodeGen/IntrinsicLowering.h" + +#include "llvm/Transforms/Scalar.h" +#include "llvm/MC/MCAsmInfo.h" +#include "llvm/MC/MCContext.h" +#include "llvm/MC/MCInstrInfo.h" +#include "llvm/MC/MCObjectFileInfo.h" +#include "llvm/MC/MCRegisterInfo.h" +#include "llvm/MC/MCSubtargetInfo.h" +#include "llvm/MC/MCSymbol.h" + +#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >=5 +#include "llvm/IR/Mangler.h" +#include "llvm/IR/CallSite.h" +#include "llvm/IR/CFG.h" +#include "llvm/IR/InstVisitor.h" +#include "llvm/IR/IRPrintingPasses.h" +#include "llvm/IR/Verifier.h" +#include "llvm/IR/InstIterator.h" +#include "llvm/IR/Dominators.h" +#else +#include "llvm/Support/CallSite.h" +#include "llvm/Support/CFG.h" +#include "llvm/Support/InstIterator.h" +#include "llvm/InstVisitor.h" +#include "llvm/Analysis/Verifier.h" +#include "llvm/Analysis/Dominators.h" +#include "llvm/Assembly/PrintModulePass.h" +#include "llvm/Target/Mangler.h" +#endif + +#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >=7 +#include "llvm/Analysis/TargetLibraryInfo.h" +#include "llvm/IR/LegacyPassManager.h" +#else +#include "llvm/Target/TargetLibraryInfo.h" +#include "llvm/PassManager.h" +#endif +#include "llvm/ADT/Triple.h" + +#include + +#endif /* __GBE_IR_LLVM_INCLUDES_HPP__ */ diff --git a/backend/src/llvm/llvm_intrinsic_lowering.cpp b/backend/src/llvm/llvm_intrinsic_lowering.cpp index 7d1f8f0..b35d1e6 100644 --- a/backend/src/llvm/llvm_intrinsic_lowering.cpp +++ b/backend/src/llvm/llvm_intrinsic_lowering.cpp @@ -20,29 +20,7 @@ * \author Yang Rong */ -#include "llvm/Config/llvm-config.h" -#if LLVM_VERSION_MINOR <= 2 -#include "llvm/Function.h" -#include "llvm/InstrTypes.h" -#include "llvm/Instructions.h" -#include "llvm/IntrinsicInst.h" -#include "llvm/Module.h" -#else -#include "llvm/IR/Function.h" -#include "llvm/IR/InstrTypes.h" -#include "llvm/IR/Instructions.h" -#include "llvm/IR/IntrinsicInst.h" -#include "llvm/IR/Module.h" -#endif /* LLVM_VERSION_MINOR <= 2 */ -#include "llvm/Pass.h" -#if LLVM_VERSION_MINOR <= 1 -#include "llvm/Support/IRBuilder.h" -#elif LLVM_VERSION_MINOR == 2 -#include "llvm/IRBuilder.h" -#else -#include "llvm/IR/IRBuilder.h" -#endif /* LLVM_VERSION_MINOR <= 1 */ -#include "llvm/Support/raw_ostream.h" +#include "llvm_includes.hpp" #include "llvm/llvm_gen_backend.hpp" #include "sys/map.hpp" diff --git a/backend/src/llvm/llvm_loadstore_optimization.cpp b/backend/src/llvm/llvm_loadstore_optimization.cpp index c6349fa..698fdc2 100644 --- a/backend/src/llvm/llvm_loadstore_optimization.cpp +++ b/backend/src/llvm/llvm_loadstore_optimization.cpp @@ -22,37 +22,7 @@ * from Vectorize passes in llvm. */ -#include "llvm/IR/Instructions.h" -#include "llvm/Pass.h" -#include "llvm/PassManager.h" - -#include "llvm/Config/llvm-config.h" -#include "llvm/ADT/DenseMap.h" -#include "llvm/ADT/PostOrderIterator.h" -#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR <= 2 -#include "llvm/Function.h" -#include "llvm/InstrTypes.h" -#include "llvm/Instructions.h" -#include "llvm/IntrinsicInst.h" -#include "llvm/Module.h" -#else -#include "llvm/IR/Function.h" -#include "llvm/IR/InstrTypes.h" -#include "llvm/IR/Instructions.h" -#include "llvm/IR/IntrinsicInst.h" -#include "llvm/IR/Module.h" -#endif /* LLVM_VERSION_MINOR <= 2 */ -#include "llvm/Pass.h" -#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR <= 1 -#include "llvm/Support/IRBuilder.h" -#elif LLVM_VERSION_MINOR == 2 -#include "llvm/IRBuilder.h" -#else -#include "llvm/IR/IRBuilder.h" -#endif /* LLVM_VERSION_MINOR <= 1 */ -#include "llvm/Support/raw_ostream.h" -#include "llvm/Analysis/ScalarEvolution.h" -#include "llvm/Analysis/ScalarEvolutionExpressions.h" +#include "llvm_includes.hpp" using namespace llvm; namespace gbe { @@ -72,7 +42,9 @@ namespace gbe { virtual bool runOnBasicBlock(BasicBlock &BB) { SE = &getAnalysis(); - #if LLVM_VERSION_MINOR >= 5 + #if LLVM_VERSION_MINOR >= 7 + TD = &BB.getModule()->getDataLayout(); + #elif LLVM_VERSION_MINOR >= 5 DataLayoutPass *DLP = getAnalysisIfAvailable(); TD = DLP ? &DLP->getDataLayout() : nullptr; #else diff --git a/backend/src/llvm/llvm_passes.cpp b/backend/src/llvm/llvm_passes.cpp index 223f61b..d5d965b 100644 --- a/backend/src/llvm/llvm_passes.cpp +++ b/backend/src/llvm/llvm_passes.cpp @@ -30,75 +30,7 @@ * Segovia) the right to use another license for it (MIT here) */ -#include "llvm/Config/llvm-config.h" -#if LLVM_VERSION_MINOR <= 2 -#include "llvm/CallingConv.h" -#include "llvm/Constants.h" -#include "llvm/DerivedTypes.h" -#include "llvm/Module.h" -#include "llvm/Instructions.h" -#else -#include "llvm/IR/CallingConv.h" -#include "llvm/IR/Constants.h" -#include "llvm/IR/DerivedTypes.h" -#include "llvm/IR/Module.h" -#include "llvm/IR/Instructions.h" -#endif /* LLVM_VERSION_MINOR <= 2 */ -#include "llvm/Pass.h" -#include "llvm/PassManager.h" -#if LLVM_VERSION_MINOR <= 2 -#include "llvm/Intrinsics.h" -#include "llvm/IntrinsicInst.h" -#include "llvm/InlineAsm.h" -#else -#include "llvm/IR/Intrinsics.h" -#include "llvm/IR/IntrinsicInst.h" -#include "llvm/IR/InlineAsm.h" -#endif /* LLVM_VERSION_MINOR <= 2 */ -#include "llvm/ADT/StringExtras.h" -#include "llvm/ADT/SmallString.h" -#include "llvm/ADT/STLExtras.h" -#include "llvm/Analysis/ConstantsScanner.h" -#include "llvm/Analysis/LoopInfo.h" -#include "llvm/Analysis/ValueTracking.h" -#include "llvm/CodeGen/Passes.h" -#include "llvm/CodeGen/IntrinsicLowering.h" - -#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >=5 -#include "llvm/IR/Mangler.h" -#else -#include "llvm/Target/Mangler.h" -#endif - -#include "llvm/Transforms/Scalar.h" -#include "llvm/MC/MCAsmInfo.h" -#include "llvm/MC/MCContext.h" -#include "llvm/MC/MCInstrInfo.h" -#include "llvm/MC/MCObjectFileInfo.h" -#include "llvm/MC/MCRegisterInfo.h" -#include "llvm/MC/MCSubtargetInfo.h" -#include "llvm/MC/MCSymbol.h" -#if !defined(LLVM_VERSION_MAJOR) || (LLVM_VERSION_MINOR == 1) -#include "llvm/Target/TargetData.h" -#elif LLVM_VERSION_MINOR == 2 -#include "llvm/DataLayout.h" -#else -#include "llvm/IR/DataLayout.h" -#endif -#include "llvm/Support/ErrorHandling.h" -#include "llvm/Support/FormattedStream.h" -#if (LLVM_VERSION_MAJOR == 3) && (LLVM_VERSION_MINOR <= 2) -#include "llvm/Support/InstVisitor.h" -#elif LLVM_VERSION_MINOR >= 5 -#include "llvm/IR/InstVisitor.h" -#else -#include "llvm/InstVisitor.h" -#endif -#include "llvm/Support/MathExtras.h" -#include "llvm/Support/TargetRegistry.h" -#include "llvm/Support/Host.h" -#include "llvm/Support/ToolOutputFile.h" -#include "llvm/Support/SourceMgr.h" +#include "llvm_includes.hpp" #include "llvm/llvm_gen_backend.hpp" #include "ir/unit.hpp" diff --git a/backend/src/llvm/llvm_printf_parser.cpp b/backend/src/llvm/llvm_printf_parser.cpp index 3d84457..1e8427c 100644 --- a/backend/src/llvm/llvm_printf_parser.cpp +++ b/backend/src/llvm/llvm_printf_parser.cpp @@ -33,39 +33,7 @@ #include #include -#include "llvm/Config/llvm-config.h" -#if LLVM_VERSION_MINOR <= 2 -#include "llvm/Function.h" -#include "llvm/InstrTypes.h" -#include "llvm/Instructions.h" -#include "llvm/IntrinsicInst.h" -#include "llvm/Module.h" -#else -#include "llvm/IR/Function.h" -#include "llvm/IR/InstrTypes.h" -#include "llvm/IR/Instructions.h" -#include "llvm/IR/IntrinsicInst.h" -#include "llvm/IR/Module.h" -#endif /* LLVM_VERSION_MINOR <= 2 */ -#include "llvm/Pass.h" -#if LLVM_VERSION_MINOR <= 1 -#include "llvm/Support/IRBuilder.h" -#elif LLVM_VERSION_MINOR == 2 -#include "llvm/IRBuilder.h" -#else -#include "llvm/IR/IRBuilder.h" -#endif /* LLVM_VERSION_MINOR <= 1 */ - -#if LLVM_VERSION_MINOR >= 5 -#include "llvm/IR/CallSite.h" -#include "llvm/IR/CFG.h" -#else -#include "llvm/Support/CallSite.h" -#include "llvm/Support/CFG.h" -#endif - -#include "llvm/Support/raw_ostream.h" -#include "llvm/IR/Attributes.h" +#include "llvm_includes.hpp" #include "llvm/llvm_gen_backend.hpp" #include "sys/map.hpp" diff --git a/backend/src/llvm/llvm_sampler_fix.cpp b/backend/src/llvm/llvm_sampler_fix.cpp index 8c76324..01db8fe 100644 --- a/backend/src/llvm/llvm_sampler_fix.cpp +++ b/backend/src/llvm/llvm_sampler_fix.cpp @@ -20,27 +20,8 @@ * make sure to get correct pixel value. But for some other * sampler, we don't need those work around code. */ -#include "llvm/IR/Instructions.h" -#include "llvm/Pass.h" -#include "llvm/PassManager.h" -#include "llvm/Config/llvm-config.h" -#include "llvm/ADT/DenseMap.h" -#include "llvm/ADT/PostOrderIterator.h" -#include "llvm/IR/Function.h" -#include "llvm/IR/InstrTypes.h" -#include "llvm/IR/Instructions.h" -#include "llvm/IR/IntrinsicInst.h" -#include "llvm/IR/Module.h" -#include "llvm/Pass.h" -#include "llvm/IR/IRBuilder.h" -#if LLVM_VERSION_MINOR >= 5 -#include "llvm/IR/CFG.h" -#else -#include "llvm/Support/CFG.h" -#endif - -#include "llvm/Analysis/ConstantsScanner.h" +#include "llvm_includes.hpp" #include "llvm_gen_backend.hpp" #include "ocl_common_defines.h" diff --git a/backend/src/llvm/llvm_scalarize.cpp b/backend/src/llvm/llvm_scalarize.cpp index bc985c6..7ee5259 100644 --- a/backend/src/llvm/llvm_scalarize.cpp +++ b/backend/src/llvm/llvm_scalarize.cpp @@ -59,39 +59,7 @@ // //===----------------------------------------------------------------------===// -#include "llvm/Config/llvm-config.h" -#include "llvm/ADT/DenseMap.h" -#include "llvm/ADT/PostOrderIterator.h" -#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR <= 2 -#include "llvm/Function.h" -#include "llvm/InstrTypes.h" -#include "llvm/Instructions.h" -#include "llvm/IntrinsicInst.h" -#include "llvm/Module.h" -#else -#include "llvm/IR/Function.h" -#include "llvm/IR/InstrTypes.h" -#include "llvm/IR/Instructions.h" -#include "llvm/IR/IntrinsicInst.h" -#include "llvm/IR/Module.h" -#endif /* LLVM_VERSION_MINOR <= 2 */ -#include "llvm/Pass.h" -#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR <= 1 -#include "llvm/Support/IRBuilder.h" -#elif LLVM_VERSION_MINOR == 2 -#include "llvm/IRBuilder.h" -#else -#include "llvm/IR/IRBuilder.h" -#endif /* LLVM_VERSION_MINOR <= 1 */ - -#if LLVM_VERSION_MINOR >= 5 -#include "llvm/IR/CallSite.h" -#include "llvm/IR/CFG.h" -#else -#include "llvm/Support/CallSite.h" -#include "llvm/Support/CFG.h" -#endif -#include "llvm/Support/raw_ostream.h" +#include "llvm_includes.hpp" #include "llvm/llvm_gen_backend.hpp" #include "sys/map.hpp" @@ -128,7 +96,6 @@ namespace gbe { Scalarize() : FunctionPass(ID) { - initializeLoopInfoPass(*PassRegistry::getPassRegistry()); #if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 5 initializeDominatorTreeWrapperPassPass(*PassRegistry::getPassRegistry()); #else diff --git a/backend/src/llvm/llvm_to_gen.cpp b/backend/src/llvm/llvm_to_gen.cpp index 891f2a1..538d1c5 100644 --- a/backend/src/llvm/llvm_to_gen.cpp +++ b/backend/src/llvm/llvm_to_gen.cpp @@ -22,40 +22,8 @@ * \author Benjamin Segovia */ -#include "llvm/Config/llvm-config.h" -#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR <= 2 -#include "llvm/LLVMContext.h" -#include "llvm/Module.h" -#include "llvm/DataLayout.h" -#else -#include "llvm/IR/LLVMContext.h" -#include "llvm/IR/Module.h" -#include "llvm/IR/DataLayout.h" -#endif /* LLVM_VERSION_MINOR <= 2 */ -#include "llvm/PassManager.h" -#include "llvm/Pass.h" -#include "llvm/Analysis/Passes.h" -#include "llvm/Transforms/IPO.h" -#include "llvm/Target/TargetLibraryInfo.h" -#include "llvm/ADT/Triple.h" -#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR <= 2 -#include "llvm/Support/IRReader.h" -#else -#include "llvm/IRReader/IRReader.h" -#include "llvm/Support/SourceMgr.h" -#endif /* LLVM_VERSION_MINOR <= 2 */ -#include "llvm/Support/raw_ostream.h" -#include "llvm/Transforms/Scalar.h" - -#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >=5 -#include "llvm/IR/IRPrintingPasses.h" -#include "llvm/IR/Verifier.h" -#else -#include "llvm/Analysis/Verifier.h" -#include "llvm/Assembly/PrintModulePass.h" -#endif +#include "llvm_includes.hpp" -#include "llvm/Analysis/CFGPrinter.h" #include "llvm/llvm_gen_backend.hpp" #include "llvm/llvm_to_gen.hpp" #include "sys/cvar.hpp" @@ -64,8 +32,6 @@ #include "ir/function.hpp" #include "ir/structurizer.hpp" -#include - #include #include #include @@ -78,11 +44,19 @@ namespace gbe BVAR(OCL_OUTPUT_CFG_GEN_IR, false); using namespace llvm; - void runFuntionPass(Module &mod, TargetLibraryInfo *libraryInfo, const DataLayout &DL) +#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 7 + using namespace llvm::legacy; + #define TARGETLIBRARY TargetLibraryInfoImpl +#else + #define TARGETLIBRARY TargetLibraryInfo +#endif + + void runFuntionPass(Module &mod, TARGETLIBRARY *libraryInfo, const DataLayout &DL) { FunctionPassManager FPM(&mod); -#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 6 +#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 7 +#elif LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 6 FPM.add(new DataLayoutPass()); #elif LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR == 5 FPM.add(new DataLayoutPass(DL)); @@ -95,7 +69,11 @@ namespace gbe #else FPM.add(createVerifierPass()); #endif +#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 7 + FPM.add(new TargetLibraryInfoWrapperPass(*libraryInfo)); +#else FPM.add(new TargetLibraryInfo(*libraryInfo)); +#endif FPM.add(createTypeBasedAliasAnalysisPass()); FPM.add(createBasicAliasAnalysisPass()); FPM.add(createCFGSimplificationPass()); @@ -111,18 +89,24 @@ namespace gbe FPM.doFinalization(); } - void runModulePass(Module &mod, TargetLibraryInfo *libraryInfo, const DataLayout &DL, int optLevel, bool strictMath) + void runModulePass(Module &mod, TARGETLIBRARY *libraryInfo, const DataLayout &DL, int optLevel, bool strictMath) { - llvm::PassManager MPM; + PassManager MPM; -#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 6 +#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 7 +#elif LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 6 MPM.add(new DataLayoutPass()); #elif LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR == 5 MPM.add(new DataLayoutPass(DL)); #else MPM.add(new DataLayout(DL)); #endif + +#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 7 + MPM.add(new TargetLibraryInfoWrapperPass(*libraryInfo)); +#else MPM.add(new TargetLibraryInfo(*libraryInfo)); +#endif MPM.add(createTypeBasedAliasAnalysisPass()); MPM.add(createBasicAliasAnalysisPass()); MPM.add(createIntrinsicLoweringPass()); @@ -202,7 +186,7 @@ namespace gbe #if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 5 #define OUTPUT_BITCODE(STAGE, MOD) do { \ - llvm::PassManager passes__; \ + PassManager passes__; \ if (OCL_OUTPUT_LLVM_##STAGE) { \ passes__.add(createPrintModulePass(*o)); \ passes__.run(MOD); \ @@ -210,7 +194,7 @@ namespace gbe }while(0) #else #define OUTPUT_BITCODE(STAGE, MOD) do { \ - llvm::PassManager passes__; \ + PassManager passes__; \ if (OCL_OUTPUT_LLVM_##STAGE) { \ passes__.add(createPrintModulePass(&*o)); \ passes__.run(MOD); \ @@ -260,16 +244,20 @@ namespace gbe Module &mod = *M.get(); DataLayout DL(&mod); +#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 7 + mod.setDataLayout(DL); +#endif Triple TargetTriple(mod.getTargetTriple()); - TargetLibraryInfo *libraryInfo = new TargetLibraryInfo(TargetTriple); + TARGETLIBRARY *libraryInfo = new TARGETLIBRARY(TargetTriple); libraryInfo->disableAllFunctions(); OUTPUT_BITCODE(AFTER_LINK, mod); runFuntionPass(mod, libraryInfo, DL); runModulePass(mod, libraryInfo, DL, optLevel, strictMath); - llvm::PassManager passes; -#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 6 + PassManager passes; +#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 7 +#elif LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 6 passes.add(new DataLayoutPass()); #elif LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR == 5 passes.add(new DataLayoutPass(DL)); diff --git a/backend/src/llvm/llvm_unroll.cpp b/backend/src/llvm/llvm_unroll.cpp index 5d3fad8..6990e39 100644 --- a/backend/src/llvm/llvm_unroll.cpp +++ b/backend/src/llvm/llvm_unroll.cpp @@ -18,34 +18,9 @@ #include "llvm/Config/llvm-config.h" #if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 5 #include -#if LLVM_VERSION_MINOR <= 2 -#include "llvm/Function.h" -#include "llvm/InstrTypes.h" -#include "llvm/Instructions.h" -#include "llvm/IntrinsicInst.h" -#include "llvm/Module.h" -#else -#include "llvm/IR/Function.h" -#include "llvm/IR/InstrTypes.h" -#include "llvm/IR/Instructions.h" -#include "llvm/IR/IntrinsicInst.h" -#include "llvm/IR/Module.h" -#endif /* LLVM_VERSION_MINOR <= 2 */ -#include "llvm/Pass.h" -#if LLVM_VERSION_MINOR <= 1 -#include "llvm/Support/IRBuilder.h" -#elif LLVM_VERSION_MINOR == 2 -#include "llvm/IRBuilder.h" -#else -#include "llvm/IR/IRBuilder.h" -#endif /* LLVM_VERSION_MINOR <= 1 */ -#include "llvm/Support/raw_ostream.h" -#include "llvm/PassManager.h" -#include "llvm/Transforms/Scalar.h" -#include "llvm/Analysis/ScalarEvolution.h" -#include "llvm/Analysis/LoopPass.h" -#include "llvm/Analysis/TargetTransformInfo.h" -#include "llvm/IR/Dominators.h" + +#include "llvm_includes.hpp" + #include "llvm/llvm_gen_backend.hpp" #include "sys/map.hpp" @@ -61,8 +36,13 @@ namespace gbe { LoopPass(ID) {} void getAnalysisUsage(AnalysisUsage &AU) const { +#if (LLVM_VERSION_MAJOR == 3) && (LLVM_VERSION_MINOR >= 7) + AU.addRequired(); + AU.addPreserved(); +#else AU.addRequired(); AU.addPreserved(); +#endif AU.addRequiredID(LoopSimplifyID); AU.addPreservedID(LoopSimplifyID); AU.addRequiredID(LCSSAID); -- 1.8.3.2