aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Target/RISCV/RISCVTargetMachine.cpp
diff options
context:
space:
mode:
authorMikhail R. Gadelha <mikhail@igalia.com>2025-03-27 19:31:38 -0300
committerGitHub <noreply@github.com>2025-03-27 19:31:38 -0300
commitd8e44a9ab2901eee7cd0440b62722eb01cac94d7 (patch)
tree5fdfb68bb16d610e7eb666237ae6b7926e072ba1 /llvm/lib/Target/RISCV/RISCVTargetMachine.cpp
parent01e505b9922485514d4e1f9a26c390d0e7a71bf4 (diff)
downloadllvm-d8e44a9ab2901eee7cd0440b62722eb01cac94d7.zip
llvm-d8e44a9ab2901eee7cd0440b62722eb01cac94d7.tar.gz
llvm-d8e44a9ab2901eee7cd0440b62722eb01cac94d7.tar.bz2
[RISCV] Add late optimization pass for riscv (#133256)
This patch is an alternative to PRs #117060, #131684, #131728. The patch adds a late optimization pass that replaces conditional branches that can be statically evaluated with an unconditinal branch. Adding Michael as a co-author as most of the code that evaluates the condition comes from #131684. Co-authored-by: Michael Maitland michaeltmaitland@gmail.com
Diffstat (limited to 'llvm/lib/Target/RISCV/RISCVTargetMachine.cpp')
-rw-r--r--llvm/lib/Target/RISCV/RISCVTargetMachine.cpp3
1 files changed, 3 insertions, 0 deletions
diff --git a/llvm/lib/Target/RISCV/RISCVTargetMachine.cpp b/llvm/lib/Target/RISCV/RISCVTargetMachine.cpp
index f78e5f8..ec8ba33 100644
--- a/llvm/lib/Target/RISCV/RISCVTargetMachine.cpp
+++ b/llvm/lib/Target/RISCV/RISCVTargetMachine.cpp
@@ -127,6 +127,7 @@ extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeRISCVTarget() {
initializeRISCVPostLegalizerCombinerPass(*PR);
initializeKCFIPass(*PR);
initializeRISCVDeadRegisterDefinitionsPass(*PR);
+ initializeRISCVLateBranchOptPass(*PR);
initializeRISCVMakeCompressibleOptPass(*PR);
initializeRISCVGatherScatterLoweringPass(*PR);
initializeRISCVCodeGenPreparePass(*PR);
@@ -565,6 +566,8 @@ void RISCVPassConfig::addPreEmitPass() {
if (TM->getOptLevel() >= CodeGenOptLevel::Default &&
EnableRISCVCopyPropagation)
addPass(createMachineCopyPropagationPass(true));
+ if (TM->getOptLevel() >= CodeGenOptLevel::Default)
+ addPass(createRISCVLateBranchOptPass());
addPass(&BranchRelaxationPassID);
addPass(createRISCVMakeCompressibleOptPass());
}