[llvm] [PM] Execute IndVarSimplifyPass precede RessociatePass (PR #71054)
via llvm-commits
llvm-commits at lists.llvm.org
Thu Nov 2 05:18:45 PDT 2023
https://github.com/erickq created https://github.com/llvm/llvm-project/pull/71054
ReassociatePass may clear nsw/nuw flags of some instructions, which may have side effects on optimizations in IndVarSimplifyPass.
>From 640dcb7afd7a6fed35b3ec9a35791121f5c16ee4 Mon Sep 17 00:00:00 2001
From: chendewen <chendewen3 at huawei.com>
Date: Thu, 2 Nov 2023 20:07:11 +0800
Subject: [PATCH] [PM] Execute IndVarSimplifyPass precede RessociatePass
ReassociatePass may clear nsw/nuw flags of some instructions, which may have side effects on optimizations in IndVarSimplifyPass.
---
llvm/lib/Passes/PassBuilderPipelines.cpp | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/llvm/lib/Passes/PassBuilderPipelines.cpp b/llvm/lib/Passes/PassBuilderPipelines.cpp
index baea2913338cda7..23dde85269ab3b9 100644
--- a/llvm/lib/Passes/PassBuilderPipelines.cpp
+++ b/llvm/lib/Passes/PassBuilderPipelines.cpp
@@ -580,6 +580,10 @@ PassBuilder::buildFunctionSimplificationPipeline(OptimizationLevel Level,
FPM.addPass(
SimplifyCFGPass(SimplifyCFGOptions().convertSwitchRangeToICmp(true)));
+ // ReassociatePass may clear nsw/nuw flags of some instructions, which may
+ // have side effects on optimizations in IndVarSimplifyPass.
+ FPM.addPass(createFunctionToLoopPassAdaptor(IndVarSimplifyPass()));
+
// Form canonically associated expression trees, and simplify the trees using
// basic mathematical properties. For example, this will form (nearly)
// minimal multiplication trees.
More information about the llvm-commits
mailing list