diff options
Diffstat (limited to 'backend/src/llvm/llvm_to_gen.cpp')
| -rw-r--r-- | backend/src/llvm/llvm_to_gen.cpp | 24 |
1 files changed, 12 insertions, 12 deletions
diff --git a/backend/src/llvm/llvm_to_gen.cpp b/backend/src/llvm/llvm_to_gen.cpp index 8e49cbb9..865d2389 100644 --- a/backend/src/llvm/llvm_to_gen.cpp +++ b/backend/src/llvm/llvm_to_gen.cpp @@ -76,14 +76,14 @@ namespace gbe BVAR(OCL_OUTPUT_CFG_ONLY, false); using namespace llvm; - void runFuntionPass(Module &mod, TargetLibraryInfo *libraryInfo) + void runFuntionPass(Module &mod, TargetLibraryInfo *libraryInfo, DataLayout &DL) { FunctionPassManager FPM(&mod); #if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 5 - FPM.add(new DataLayoutPass(&mod)); + FPM.add(new DataLayoutPass(DL)); #else - FPM.add(new DataLayout(&mod)); + FPM.add(&DL); #endif #if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >=5 @@ -107,14 +107,14 @@ namespace gbe FPM.doFinalization(); } - void runModulePass(Module &mod, TargetLibraryInfo *libraryInfo, int optLevel) + void runModulePass(Module &mod, TargetLibraryInfo *libraryInfo, DataLayout &DL, int optLevel) { llvm::PassManager MPM; #if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 5 - MPM.add(new DataLayoutPass(&mod)); + MPM.add(new DataLayoutPass(DL)); #else - MPM.add(new DataLayout(&mod)); + MPM.add(&DL); #endif MPM.add(new TargetLibraryInfo(*libraryInfo)); MPM.add(createTypeBasedAliasAnalysisPass()); @@ -230,6 +230,7 @@ namespace gbe return false; Module &mod = *M.get(); + DataLayout DL(&mod); Triple TargetTriple(mod.getTargetTriple()); TargetLibraryInfo *libraryInfo = new TargetLibraryInfo(TargetTriple); @@ -237,19 +238,18 @@ namespace gbe OUTPUT_BITCODE(AFTER_LINK, mod); - runFuntionPass(mod, libraryInfo); - runModulePass(mod, libraryInfo, optLevel); - + runFuntionPass(mod, libraryInfo, DL); + runModulePass(mod, libraryInfo, DL, optLevel); llvm::PassManager passes; #if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 5 - passes.add(new DataLayoutPass(&mod)); + passes.add(new DataLayoutPass(DL)); #else - passes.add(new DataLayout(&mod)); + passes.add(&DL); #endif // Print the code before further optimizations passes.add(createIntrinsicLoweringPass()); passes.add(createFunctionInliningPass(200000)); - passes.add(createScalarReplAggregatesPass()); // Break up allocas + passes.add(createScalarReplAggregatesPass(64, true, -1, -1, 64)); passes.add(createLoadStoreOptimizationPass()); passes.add(createRemoveGEPPass(unit)); passes.add(createConstantPropagationPass()); |
