|
6 | 6 | */ |
7 | 7 |
|
8 | 8 | #include <algorithm> |
9 | | -#include <list> |
10 | 9 | #include <map> |
11 | 10 | #include <vector> |
12 | 11 |
|
|
17 | 16 | #include <triton/tritonToLLVM.hpp> |
18 | 17 | #include <triton/tritonTypes.hpp> |
19 | 18 |
|
| 19 | +#include <llvm/IR/PassManager.h> |
| 20 | +#include <llvm/Analysis/LoopAnalysisManager.h> |
| 21 | +#include <llvm/Analysis/CGSCCPassManager.h> |
| 22 | +#include <llvm/Passes/PassBuilder.h> |
20 | 23 |
|
21 | 24 |
|
22 | 25 | namespace triton { |
@@ -104,12 +107,21 @@ namespace triton { |
104 | 107 |
|
105 | 108 | /* Apply LLVM optimizations (-03 -Oz) if enabled */ |
106 | 109 | if (optimize) { |
107 | | - llvm::legacy::PassManager pm; |
108 | | - llvm::PassManagerBuilder pmb; |
109 | | - pmb.OptLevel = 3; |
110 | | - pmb.SizeLevel = 2; |
111 | | - pmb.populateModulePassManager(pm); |
112 | | - pm.run(*this->llvmModule); |
| 110 | + llvm::LoopAnalysisManager lam; |
| 111 | + llvm::FunctionAnalysisManager fam; |
| 112 | + llvm::CGSCCAnalysisManager cgam; |
| 113 | + llvm::ModuleAnalysisManager mam; |
| 114 | + |
| 115 | + llvm::PassBuilder pb; |
| 116 | + |
| 117 | + pb.registerModuleAnalyses(mam); |
| 118 | + pb.registerCGSCCAnalyses(cgam); |
| 119 | + pb.registerFunctionAnalyses(fam); |
| 120 | + pb.registerLoopAnalyses(lam); |
| 121 | + pb.crossRegisterProxies(lam, fam, cgam, mam); |
| 122 | + |
| 123 | + llvm::ModulePassManager pm = pb.buildPerModuleDefaultPipeline(llvm::OptimizationLevel::O3); |
| 124 | + pm.run(*this->llvmModule, mam); |
113 | 125 | } |
114 | 126 |
|
115 | 127 | return this->llvmModule; |
@@ -314,12 +326,12 @@ namespace triton { |
314 | 326 | return results->at(reinterpret_cast<triton::ast::ReferenceNode*>(node.get())->getSymbolicExpression()->getAst()); |
315 | 327 |
|
316 | 328 | case triton::ast::SELECT_NODE: { |
317 | | - auto* ptr = this->llvmIR.CreateIntToPtr(children[1], llvm::Type::getInt8PtrTy(this->llvmContext)); |
| 329 | + auto* ptr = this->llvmIR.CreateIntToPtr(children[1], llvm::Type::getInt8Ty(this->llvmContext)->getPointerTo()); |
318 | 330 | return this->llvmIR.CreateLoad(llvm::Type::getInt8Ty(this->llvmContext), ptr); |
319 | 331 | } |
320 | 332 |
|
321 | 333 | case triton::ast::STORE_NODE: { |
322 | | - auto* ptr = this->llvmIR.CreateIntToPtr(children[1], llvm::Type::getInt8PtrTy(this->llvmContext)); |
| 334 | + auto* ptr = this->llvmIR.CreateIntToPtr(children[1], llvm::Type::getInt8Ty(this->llvmContext)->getPointerTo()); |
323 | 335 | return this->llvmIR.CreateStore(children[2], ptr); |
324 | 336 | } |
325 | 337 |
|
|
0 commit comments