[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