From 2235bba87286d55ebcef4030f4747c43236f7ef4 Mon Sep 17 00:00:00 2001 From: Roland Conybeare Date: Fri, 21 Jun 2024 17:01:30 -0400 Subject: [PATCH] xo-jit: add mem-to-register pass to IrPipeline --- include/xo/jit/IrPipeline.hpp | 1 + src/jit/IrPipeline.cpp | 7 +++++++ 2 files changed, 8 insertions(+) diff --git a/include/xo/jit/IrPipeline.hpp b/include/xo/jit/IrPipeline.hpp index 7efd5b4f..60473bc5 100644 --- a/include/xo/jit/IrPipeline.hpp +++ b/include/xo/jit/IrPipeline.hpp @@ -28,6 +28,7 @@ #include "llvm/Transforms/InstCombine/InstCombine.h" #include "llvm/Transforms/Scalar.h" #include "llvm/Transforms/Scalar/GVN.h" +#include "llvm/Transforms/Utils/Mem2Reg.h" #include "llvm/Transforms/Scalar/Reassociate.h" #include "llvm/Transforms/Scalar/SimplifyCFG.h" diff --git a/src/jit/IrPipeline.cpp b/src/jit/IrPipeline.cpp index d08d9639..285edbe3 100644 --- a/src/jit/IrPipeline.cpp +++ b/src/jit/IrPipeline.cpp @@ -24,6 +24,13 @@ namespace xo { /** transform passes **/ this->llvm_fpmgr_->addPass(llvm::InstCombinePass()); + + /* NOTE: llvm 19 adds mem2reg transform here. + * speculating that PromotePass() does same/goodenough thing in llvm 18. + * This pays off, works first try! + */ + this->llvm_fpmgr_->addPass(llvm::PromotePass()); + this->llvm_fpmgr_->addPass(llvm::ReassociatePass()); this->llvm_fpmgr_->addPass(llvm::GVNPass()); this->llvm_fpmgr_->addPass(llvm::SimplifyCFGPass());