[llvm] [CVP] Stop CVP constant propagation from destroying `llvm.assume` (PR #183688)

Nikita Popov via llvm-commits llvm-commits at lists.llvm.org
Mon Mar 2 05:52:03 PST 2026


================
@@ -333,10 +333,22 @@ static bool constantFoldCmp(CmpInst *Cmp, LazyValueInfo *LVI) {
   if (!Res)
     return false;
 
-  ++NumCmps;
-  Cmp->replaceAllUsesWith(Res);
-  Cmp->eraseFromParent();
-  return true;
+  bool Changed = false;
+  Cmp->replaceUsesWithIf(Res, [&Changed](Use &U) {
+    if (isa<AssumeInst>(U.getUser()))
+      return false;
+    Changed = true;
+    return true;
+  });
----------------
nikic wrote:

```suggestion
  bool Changed = Cmp->replaceUsesWithIf(Res, [](Use &U) {
    return !isa<AssumeInst>(U.getUser()));
  });
```
After a rebase on top of https://github.com/llvm/llvm-project/pull/184107.

https://github.com/llvm/llvm-project/pull/183688


More information about the llvm-commits mailing list