45 lines
1.8 KiB
Diff
45 lines
1.8 KiB
Diff
--- triton/src/libtriton/includes/triton/tritonToLLVM.hpp.orig 2023-12-18 10:10:45.627931500 +0300
|
|
+++ triton/src/libtriton/includes/triton/tritonToLLVM.hpp 2023-12-18 10:10:50.668006900 +0300
|
|
@@ -19,9 +19,10 @@
|
|
|
|
#include <llvm/IR/IRBuilder.h>
|
|
#include <llvm/IR/LLVMContext.h>
|
|
-#include <llvm/IR/LegacyPassManager.h>
|
|
#include <llvm/IR/Module.h>
|
|
-#include <llvm/Transforms/IPO/PassManagerBuilder.h>
|
|
+#include <llvm-c/TargetMachine.h>
|
|
+#include <llvm-c/Transforms/PassBuilder.h>
|
|
+#include <llvm/Support/CBindingWrapping.h>
|
|
|
|
|
|
|
|
--- triton/src/libtriton/ast/llvm/tritonToLLVM.cpp.orig 2023-12-18 10:41:32.749828600 +0300
|
|
+++ triton/src/libtriton/ast/llvm/tritonToLLVM.cpp 2023-12-19 10:50:25.693682600 +0300
|
|
@@ -100,12 +100,20 @@
|
|
|
|
/* Apply LLVM optimizations (-03 -Oz) if enabled */
|
|
if (optimize) {
|
|
- llvm::legacy::PassManager pm;
|
|
- llvm::PassManagerBuilder pmb;
|
|
- pmb.OptLevel = 3;
|
|
- pmb.SizeLevel = 2;
|
|
- pmb.populateModulePassManager(pm);
|
|
- pm.run(*this->llvmModule);
|
|
+ LLVMTargetRef targ;
|
|
+ char *err_message;
|
|
+ if (LLVMGetTargetFromTriple(this->llvmModule->getTargetTriple().c_str(), &targ, &err_message)) {
|
|
+ LLVMTargetMachineRef tm = LLVMCreateTargetMachine(targ, this->llvmModule->getTargetTriple().c_str(),
|
|
+ "", "", LLVMCodeGenLevelAggressive,
|
|
+ LLVMRelocDefault, LLVMCodeModelDefault);
|
|
+
|
|
+ if (tm) {
|
|
+ LLVMPassBuilderOptionsRef opts = LLVMCreatePassBuilderOptions();
|
|
+ LLVMRunPasses(wrap(this->llvmModule.get()), "default<O3>", tm, opts);
|
|
+
|
|
+ LLVMDisposeTargetMachine(tm);
|
|
+ }
|
|
+ }
|
|
}
|
|
|
|
return this->llvmModule;
|