aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/CodeGen/CodeGenPrepare.cpp
diff options
context:
space:
mode:
authorYingwei Zheng <dtcxzyw2333@gmail.com>2025-07-26 00:23:56 +0800
committerGitHub <noreply@github.com>2025-07-26 00:23:56 +0800
commit2d0ca09305fcece75e2c501f1ec74aa6eada69a0 (patch)
treea980dc7f025cecd2cec0f498b4978c38a1379aaf /llvm/lib/CodeGen/CodeGenPrepare.cpp
parent07967d4af854e50f94ce217788fa75c3e7e9ea86 (diff)
downloadllvm-2d0ca09305fcece75e2c501f1ec74aa6eada69a0.zip
llvm-2d0ca09305fcece75e2c501f1ec74aa6eada69a0.tar.gz
llvm-2d0ca09305fcece75e2c501f1ec74aa6eada69a0.tar.bz2
[CodeGenPrepare] Make sure that `AddOffset` is also a loop invariant (#150625)
Closes https://github.com/llvm/llvm-project/issues/150611.
Diffstat (limited to 'llvm/lib/CodeGen/CodeGenPrepare.cpp')
-rw-r--r--llvm/lib/CodeGen/CodeGenPrepare.cpp4
1 files changed, 4 insertions, 0 deletions
diff --git a/llvm/lib/CodeGen/CodeGenPrepare.cpp b/llvm/lib/CodeGen/CodeGenPrepare.cpp
index c21058c..416c56d 100644
--- a/llvm/lib/CodeGen/CodeGenPrepare.cpp
+++ b/llvm/lib/CodeGen/CodeGenPrepare.cpp
@@ -2095,6 +2095,10 @@ static bool isRemOfLoopIncrementWithLoopInvariant(
if (!L->isLoopInvariant(RemAmt))
return false;
+ // Only works if the AddOffset is a loop invaraint
+ if (AddOffset && !L->isLoopInvariant(AddOffset))
+ return false;
+
// Is the PHI a loop increment?
auto LoopIncrInfo = getIVIncrement(PN, LI);
if (!LoopIncrInfo)