[llvm-branch-commits] [llvm] [CodeGen][NPM] Isolate CanonicalizeFreezeInLoopsPass into a different adaptor (PR #176690)
via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Sun Jan 18 22:37:30 PST 2026
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-backend-x86
Author: Vikram Hegde (vikramRH)
<details>
<summary>Changes</summary>
this needs to be done since "loop-mssa" adapter assumes all passes that are part of it to preserve MSSA, CanonicalizeFreezeInLoopsPass doesen't do this. I'm not really sure of the history here (about having two variants of loop pass adatpters)
---
Full diff: https://github.com/llvm/llvm-project/pull/176690.diff
3 Files Affected:
- (modified) llvm/include/llvm/Passes/CodeGenPassBuilder.h (+6-1)
- (modified) llvm/test/CodeGen/AMDGPU/llc-pipeline-npm.ll (+4-4)
- (modified) llvm/test/CodeGen/X86/llc-pipeline-npm.ll (+4-4)
``````````diff
diff --git a/llvm/include/llvm/Passes/CodeGenPassBuilder.h b/llvm/include/llvm/Passes/CodeGenPassBuilder.h
index c4a4787c34a25..4a5ddb54572b6 100644
--- a/llvm/include/llvm/Passes/CodeGenPassBuilder.h
+++ b/llvm/include/llvm/Passes/CodeGenPassBuilder.h
@@ -699,8 +699,13 @@ void CodeGenPassBuilder<Derived, TargetMachineT>::addIRPasses(
// Run loop strength reduction before anything else.
if (getOptLevel() != CodeGenOptLevel::None && !Opt.DisableLSR) {
+ // Canonicalize freeze inst pass does not use/preserve MSSA.
+ addFunctionPass(
+ createFunctionToLoopPassAdaptor(CanonicalizeFreezeInLoopsPass(),
+ /*UseMemorySSA=*/false),
+ PMW);
+
LoopPassManager LPM;
- LPM.addPass(CanonicalizeFreezeInLoopsPass());
LPM.addPass(LoopStrengthReducePass());
if (Opt.EnableLoopTermFold)
LPM.addPass(LoopTermFoldPass());
diff --git a/llvm/test/CodeGen/AMDGPU/llc-pipeline-npm.ll b/llvm/test/CodeGen/AMDGPU/llc-pipeline-npm.ll
index 953f7e1a5e3c7..5a6067f9bdf39 100644
--- a/llvm/test/CodeGen/AMDGPU/llc-pipeline-npm.ll
+++ b/llvm/test/CodeGen/AMDGPU/llc-pipeline-npm.ll
@@ -123,8 +123,8 @@
; GCN-O2-NEXT:amdgpu-codegenprepare
; GCN-O2-NEXT:loop-mssa(licm<allowspeculation>)
; GCN-O2-NEXT:verify
-; GCN-O2-NEXT:loop-mssa(canon-freeze
-; GCN-O2-NEXT:loop-reduce)
+; GCN-O2-NEXT:loop(canon-freeze)
+; GCN-O2-NEXT:loop-mssa(loop-reduce)
; GCN-O2-NEXT:mergeicmps
; GCN-O2-NEXT:expand-memcmp
; GCN-O2-NEXT:unreachableblockelim
@@ -294,8 +294,8 @@
; GCN-O3-NEXT:amdgpu-codegenprepare
; GCN-O3-NEXT:loop-mssa(licm<allowspeculation>)
; GCN-O3-NEXT:verify
-; GCN-O3-NEXT:loop-mssa(canon-freeze
-; GCN-O3-NEXT:loop-reduce)
+; GCN-O3-NEXT:loop(canon-freeze)
+; GCN-O3-NEXT:loop-mssa(loop-reduce)
; GCN-O3-NEXT:mergeicmps
; GCN-O3-NEXT:expand-memcmp
; GCN-O3-NEXT:unreachableblockelim
diff --git a/llvm/test/CodeGen/X86/llc-pipeline-npm.ll b/llvm/test/CodeGen/X86/llc-pipeline-npm.ll
index 8230539452f0d..59a21a4f0ebb6 100644
--- a/llvm/test/CodeGen/X86/llc-pipeline-npm.ll
+++ b/llvm/test/CodeGen/X86/llc-pipeline-npm.ll
@@ -76,8 +76,8 @@
; O2-NEXT: x86-lower-amx-intrinsics
; O2-NEXT: x86-lower-amx-type
; O2-NEXT: verify
-; O2-NEXT: loop-mssa(canon-freeze
-; O2-NEXT: loop-reduce)
+; O2-NEXT: loop(canon-freeze)
+; O2-NEXT: loop-mssa(loop-reduce)
; O2-NEXT: mergeicmps
; O2-NEXT: expand-memcmp
; O2-NEXT: gc-lowering)
@@ -245,8 +245,8 @@
; O3-WINDOWS-NEXT: x86-lower-amx-intrinsics
; O3-WINDOWS-NEXT: x86-lower-amx-type
; O3-WINDOWS-NEXT: verify
-; O3-WINDOWS-NEXT: loop-mssa(canon-freeze
-; O3-WINDOWS-NEXT: loop-reduce)
+; O3-WINDOWS-NEXT: loop(canon-freeze)
+; O3-WINDOWS-NEXT: loop-mssa(loop-reduce)
; O3-WINDOWS-NEXT: mergeicmps
; O3-WINDOWS-NEXT: expand-memcmp
; O3-WINDOWS-NEXT: gc-lowering)
``````````
</details>
https://github.com/llvm/llvm-project/pull/176690
More information about the llvm-branch-commits
mailing list