Skip to content

Commit 0962b2c

Browse files
committed
llvm: make compatible to llvm version >= 17
1 parent e312eaf commit 0962b2c

File tree

2 files changed

+21
-13
lines changed

2 files changed

+21
-13
lines changed

src/libtriton/ast/llvm/tritonToLLVM.cpp

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
*/
77

88
#include <algorithm>
9-
#include <list>
109
#include <map>
1110
#include <vector>
1211

@@ -17,6 +16,10 @@
1716
#include <triton/tritonToLLVM.hpp>
1817
#include <triton/tritonTypes.hpp>
1918

19+
#include <llvm/IR/PassManager.h>
20+
#include <llvm/Analysis/LoopAnalysisManager.h>
21+
#include <llvm/Analysis/CGSCCPassManager.h>
22+
#include <llvm/Passes/PassBuilder.h>
2023

2124

2225
namespace triton {
@@ -104,12 +107,21 @@ namespace triton {
104107

105108
/* Apply LLVM optimizations (-03 -Oz) if enabled */
106109
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);
113125
}
114126

115127
return this->llvmModule;
@@ -314,12 +326,12 @@ namespace triton {
314326
return results->at(reinterpret_cast<triton::ast::ReferenceNode*>(node.get())->getSymbolicExpression()->getAst());
315327

316328
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());
318330
return this->llvmIR.CreateLoad(llvm::Type::getInt8Ty(this->llvmContext), ptr);
319331
}
320332

321333
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());
323335
return this->llvmIR.CreateStore(children[2], ptr);
324336
}
325337

src/libtriton/includes/triton/tritonToLLVM.hpp

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,18 +10,14 @@
1010

1111
#include <map>
1212
#include <memory>
13-
#include <ostream>
14-
#include <string>
1513
#include <unordered_map>
1614

1715
#include <triton/ast.hpp>
1816
#include <triton/dllexport.hpp>
1917

2018
#include <llvm/IR/IRBuilder.h>
2119
#include <llvm/IR/LLVMContext.h>
22-
#include <llvm/IR/LegacyPassManager.h>
2320
#include <llvm/IR/Module.h>
24-
#include <llvm/Transforms/IPO/PassManagerBuilder.h>
2521

2622

2723

0 commit comments

Comments
 (0)