Skip to content

Revert " [InstCombine] Replace all dominated uses of condition with constants" #106921

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 1 commit into from

Conversation

ronlieb
Copy link
Contributor

@ronlieb ronlieb commented Sep 1, 2024

Reverts #105510
breaking hip build bot, please investigate.

@ronlieb ronlieb requested a review from nikic as a code owner September 1, 2024 19:47
@ronlieb ronlieb requested review from dtcxzyw and removed request for nikic September 1, 2024 19:48
@llvmbot
Copy link
Member

llvmbot commented Sep 1, 2024

@llvm/pr-subscribers-llvm-transforms

Author: None (ronlieb)

Changes

Reverts llvm/llvm-project#105510
breaking hip build bot, please investigate.


Patch is 31.59 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/106921.diff

16 Files Affected:

  • (modified) llvm/lib/Transforms/InstCombine/InstructionCombining.cpp (-17)
  • (modified) llvm/test/Transforms/InstCombine/assume.ll (+3-3)
  • (modified) llvm/test/Transforms/InstCombine/branch.ll (-96)
  • (modified) llvm/test/Transforms/InstCombine/compare-unescaped.ll (+1-1)
  • (modified) llvm/test/Transforms/InstCombine/icmp-dom.ll (+10-10)
  • (modified) llvm/test/Transforms/InstCombine/indexed-gep-compares.ll (+1-1)
  • (modified) llvm/test/Transforms/InstCombine/known-bits.ll (+4-2)
  • (modified) llvm/test/Transforms/InstCombine/phi-known-bits-operand-order.ll (+4-8)
  • (modified) llvm/test/Transforms/InstCombine/phi.ll (+8-8)
  • (modified) llvm/test/Transforms/InstCombine/pr44245.ll (+17-17)
  • (modified) llvm/test/Transforms/InstCombine/sink-into-ncd.ll (+2-2)
  • (modified) llvm/test/Transforms/InstCombine/sink_to_unreachable.ll (+6-4)
  • (modified) llvm/test/Transforms/InstCombine/zext-phi.ll (+11-13)
  • (modified) llvm/test/Transforms/LoopVectorize/AArch64/uniform-args-call-variants.ll (+2-2)
  • (modified) llvm/test/Transforms/PhaseOrdering/AArch64/constraint-elimination-placement.ll (+7-7)
  • (removed) llvm/test/Transforms/PhaseOrdering/branch-dom-cond.ll (-47)
diff --git a/llvm/lib/Transforms/InstCombine/InstructionCombining.cpp b/llvm/lib/Transforms/InstCombine/InstructionCombining.cpp
index 866e5f8a00b52d..8a96d1d0fb4c90 100644
--- a/llvm/lib/Transforms/InstCombine/InstructionCombining.cpp
+++ b/llvm/lib/Transforms/InstCombine/InstructionCombining.cpp
@@ -3705,23 +3705,6 @@ Instruction *InstCombinerImpl::visitBranchInst(BranchInst &BI) {
     return nullptr;
   }
 
-  // Replace all dominated uses of the condition with true/false
-  if (BI.getSuccessor(0) != BI.getSuccessor(1)) {
-    for (auto &U : make_early_inc_range(Cond->uses())) {
-      BasicBlockEdge Edge0(BI.getParent(), BI.getSuccessor(0));
-      if (DT.dominates(Edge0, U)) {
-        replaceUse(U, ConstantInt::getTrue(Cond->getType()));
-        addToWorklist(cast<Instruction>(U.getUser()));
-        continue;
-      }
-      BasicBlockEdge Edge1(BI.getParent(), BI.getSuccessor(1));
-      if (DT.dominates(Edge1, U)) {
-        replaceUse(U, ConstantInt::getFalse(Cond->getType()));
-        addToWorklist(cast<Instruction>(U.getUser()));
-      }
-    }
-  }
-
   DC.registerBranch(&BI);
   return nullptr;
 }
diff --git a/llvm/test/Transforms/InstCombine/assume.ll b/llvm/test/Transforms/InstCombine/assume.ll
index a728c294628cad..474da9968b66ad 100644
--- a/llvm/test/Transforms/InstCombine/assume.ll
+++ b/llvm/test/Transforms/InstCombine/assume.ll
@@ -485,7 +485,7 @@ define i1 @nonnull3B(ptr %a, i1 %control) {
 ; CHECK-NEXT:    call void @llvm.assume(i1 [[CMP]]) [ "nonnull"(ptr [[LOAD]]) ]
 ; CHECK-NEXT:    ret i1 [[CMP]]
 ; CHECK:       not_taken:
-; CHECK-NEXT:    ret i1 false
+; CHECK-NEXT:    ret i1 [[CONTROL]]
 ;
 entry:
   %load = load ptr, ptr %a
@@ -513,7 +513,7 @@ define i1 @nonnull3C(ptr %a, i1 %control) {
 ; CHECK:       exit:
 ; CHECK-NEXT:    ret i1 [[CMP2]]
 ; CHECK:       not_taken:
-; CHECK-NEXT:    ret i1 false
+; CHECK-NEXT:    ret i1 [[CONTROL]]
 ;
 entry:
   %load = load ptr, ptr %a
@@ -543,7 +543,7 @@ define i1 @nonnull3D(ptr %a, i1 %control) {
 ; CHECK:       exit:
 ; CHECK-NEXT:    ret i1 [[CMP2]]
 ; CHECK:       not_taken:
-; CHECK-NEXT:    ret i1 false
+; CHECK-NEXT:    ret i1 [[CONTROL]]
 ;
 entry:
   %load = load ptr, ptr %a
diff --git a/llvm/test/Transforms/InstCombine/branch.ll b/llvm/test/Transforms/InstCombine/branch.ll
index 1d5ff72eef9ce6..1110d5f90b1790 100644
--- a/llvm/test/Transforms/InstCombine/branch.ll
+++ b/llvm/test/Transforms/InstCombine/branch.ll
@@ -242,99 +242,3 @@ t:
 f:
   ret i32 3
 }
-
-define i32 @dom_true(i1 %cmp) {
-; CHECK-LABEL: @dom_true(
-; CHECK-NEXT:    br i1 [[CMP:%.*]], label [[IF_THEN:%.*]], label [[IF_ELSE:%.*]]
-; CHECK:       if.then:
-; CHECK-NEXT:    ret i32 1
-; CHECK:       if.else:
-; CHECK-NEXT:    ret i32 0
-;
-  br i1 %cmp, label %if.then, label %if.else
-
-if.then:
-  %zext = zext i1 %cmp to i32
-  ret i32 %zext
-
-if.else:
-  ret i32 0
-}
-
-define i32 @dom_false(i1 %cmp) {
-; CHECK-LABEL: @dom_false(
-; CHECK-NEXT:    br i1 [[CMP:%.*]], label [[IF_ELSE:%.*]], label [[IF_THEN:%.*]]
-; CHECK:       if.then:
-; CHECK-NEXT:    ret i32 0
-; CHECK:       if.else:
-; CHECK-NEXT:    ret i32 0
-;
-  br i1 %cmp, label %if.else, label %if.then
-
-if.then:
-  %zext = zext i1 %cmp to i32
-  ret i32 %zext
-
-if.else:
-  ret i32 0
-}
-
-define i32 @dom_true_phi(i1 %cmp) {
-; CHECK-LABEL: @dom_true_phi(
-; CHECK-NEXT:    br i1 [[CMP:%.*]], label [[IF_THEN:%.*]], label [[IF_ELSE:%.*]]
-; CHECK:       if.then:
-; CHECK-NEXT:    br label [[IF_END:%.*]]
-; CHECK:       if.else:
-; CHECK-NEXT:    br label [[IF_END]]
-; CHECK:       if.end:
-; CHECK-NEXT:    [[ZEXT:%.*]] = zext i1 [[CMP]] to i32
-; CHECK-NEXT:    ret i32 [[ZEXT]]
-;
-  br i1 %cmp, label %if.then, label %if.else
-
-if.then:
-  br label %if.end
-
-if.else:
-  br label %if.end
-
-if.end:
-  %phi = phi i1 [ true, %if.then ], [ %cmp, %if.else ]
-  %zext = zext i1 %phi to i32
-  ret i32 %zext
-}
-
-; Negative tests
-
-define i32 @same_dest(i1 %cmp) {
-; CHECK-LABEL: @same_dest(
-; CHECK-NEXT:    br i1 false, label [[IF_THEN:%.*]], label [[IF_THEN]]
-; CHECK:       if.then:
-; CHECK-NEXT:    [[ZEXT:%.*]] = zext i1 [[CMP:%.*]] to i32
-; CHECK-NEXT:    ret i32 [[ZEXT]]
-;
-  br i1 %cmp, label %if.then, label %if.then
-
-if.then:
-  %zext = zext i1 %cmp to i32
-  ret i32 %zext
-}
-
-define i32 @not_dom(i1 %cmp) {
-; CHECK-LABEL: @not_dom(
-; CHECK-NEXT:    br i1 [[CMP:%.*]], label [[IF_THEN:%.*]], label [[IF_ELSE:%.*]]
-; CHECK:       if.then:
-; CHECK-NEXT:    br label [[IF_ELSE]]
-; CHECK:       if.else:
-; CHECK-NEXT:    [[ZEXT:%.*]] = zext i1 [[CMP]] to i32
-; CHECK-NEXT:    ret i32 [[ZEXT]]
-;
-  br i1 %cmp, label %if.then, label %if.else
-
-if.then:
-  br label %if.else
-
-if.else:
-  %zext = zext i1 %cmp to i32
-  ret i32 %zext
-}
diff --git a/llvm/test/Transforms/InstCombine/compare-unescaped.ll b/llvm/test/Transforms/InstCombine/compare-unescaped.ll
index 02eb464c814c81..ab380c00f82641 100644
--- a/llvm/test/Transforms/InstCombine/compare-unescaped.ll
+++ b/llvm/test/Transforms/InstCombine/compare-unescaped.ll
@@ -86,7 +86,7 @@ define i1 @compare_and_call_after() {
 ; CHECK-NEXT:    call void @escape(ptr [[M]])
 ; CHECK-NEXT:    ret i1 true
 ; CHECK:       just_return:
-; CHECK-NEXT:    ret i1 false
+; CHECK-NEXT:    ret i1 [[CMP]]
 ;
   %m = call ptr @malloc(i64 24)
   %lgp = load ptr, ptr @gp, align 8, !nonnull !0
diff --git a/llvm/test/Transforms/InstCombine/icmp-dom.ll b/llvm/test/Transforms/InstCombine/icmp-dom.ll
index 3cf3a7af77041c..83cedd5ea9cb45 100644
--- a/llvm/test/Transforms/InstCombine/icmp-dom.ll
+++ b/llvm/test/Transforms/InstCombine/icmp-dom.ll
@@ -196,7 +196,7 @@ define i1 @trueblock_cmp_is_false(i32 %x, i32 %y) {
 ; CHECK:       t:
 ; CHECK-NEXT:    ret i1 false
 ; CHECK:       f:
-; CHECK-NEXT:    ret i1 false
+; CHECK-NEXT:    ret i1 [[CMP]]
 ;
 entry:
   %cmp = icmp sgt i32 %x, %y
@@ -216,7 +216,7 @@ define i1 @trueblock_cmp_is_false_commute(i32 %x, i32 %y) {
 ; CHECK:       t:
 ; CHECK-NEXT:    ret i1 false
 ; CHECK:       f:
-; CHECK-NEXT:    ret i1 false
+; CHECK-NEXT:    ret i1 [[CMP]]
 ;
 entry:
   %cmp = icmp eq i32 %x, %y
@@ -236,7 +236,7 @@ define i1 @trueblock_cmp_is_true(i32 %x, i32 %y) {
 ; CHECK:       t:
 ; CHECK-NEXT:    ret i1 true
 ; CHECK:       f:
-; CHECK-NEXT:    ret i1 false
+; CHECK-NEXT:    ret i1 [[CMP]]
 ;
 entry:
   %cmp = icmp ult i32 %x, %y
@@ -256,7 +256,7 @@ define i1 @trueblock_cmp_is_true_commute(i32 %x, i32 %y) {
 ; CHECK:       t:
 ; CHECK-NEXT:    ret i1 true
 ; CHECK:       f:
-; CHECK-NEXT:    ret i1 false
+; CHECK-NEXT:    ret i1 [[CMP]]
 ;
 entry:
   %cmp = icmp ugt i32 %x, %y
@@ -271,10 +271,10 @@ f:
 define i1 @falseblock_cmp_is_false(i32 %x, i32 %y) {
 ; CHECK-LABEL: @falseblock_cmp_is_false(
 ; CHECK-NEXT:  entry:
-; CHECK-NEXT:    [[CMP_NOT:%.*]] = icmp sgt i32 [[X:%.*]], [[Y:%.*]]
-; CHECK-NEXT:    br i1 [[CMP_NOT]], label [[F:%.*]], label [[T:%.*]]
+; CHECK-NEXT:    [[CMP:%.*]] = icmp sle i32 [[X:%.*]], [[Y:%.*]]
+; CHECK-NEXT:    br i1 [[CMP]], label [[T:%.*]], label [[F:%.*]]
 ; CHECK:       t:
-; CHECK-NEXT:    ret i1 true
+; CHECK-NEXT:    ret i1 [[CMP]]
 ; CHECK:       f:
 ; CHECK-NEXT:    ret i1 false
 ;
@@ -294,7 +294,7 @@ define i1 @falseblock_cmp_is_false_commute(i32 %x, i32 %y) {
 ; CHECK-NEXT:    [[CMP:%.*]] = icmp eq i32 [[X:%.*]], [[Y:%.*]]
 ; CHECK-NEXT:    br i1 [[CMP]], label [[T:%.*]], label [[F:%.*]]
 ; CHECK:       t:
-; CHECK-NEXT:    ret i1 true
+; CHECK-NEXT:    ret i1 [[CMP]]
 ; CHECK:       f:
 ; CHECK-NEXT:    ret i1 false
 ;
@@ -314,7 +314,7 @@ define i1 @falseblock_cmp_is_true(i32 %x, i32 %y) {
 ; CHECK-NEXT:    [[CMP:%.*]] = icmp ult i32 [[X:%.*]], [[Y:%.*]]
 ; CHECK-NEXT:    br i1 [[CMP]], label [[T:%.*]], label [[F:%.*]]
 ; CHECK:       t:
-; CHECK-NEXT:    ret i1 true
+; CHECK-NEXT:    ret i1 [[CMP]]
 ; CHECK:       f:
 ; CHECK-NEXT:    ret i1 true
 ;
@@ -334,7 +334,7 @@ define i1 @falseblock_cmp_is_true_commute(i32 %x, i32 %y) {
 ; CHECK-NEXT:    [[CMP:%.*]] = icmp sgt i32 [[X:%.*]], [[Y:%.*]]
 ; CHECK-NEXT:    br i1 [[CMP]], label [[T:%.*]], label [[F:%.*]]
 ; CHECK:       t:
-; CHECK-NEXT:    ret i1 true
+; CHECK-NEXT:    ret i1 [[CMP]]
 ; CHECK:       f:
 ; CHECK-NEXT:    ret i1 true
 ;
diff --git a/llvm/test/Transforms/InstCombine/indexed-gep-compares.ll b/llvm/test/Transforms/InstCombine/indexed-gep-compares.ll
index ef8f5fea4ff7c1..2b5b3fce705354 100644
--- a/llvm/test/Transforms/InstCombine/indexed-gep-compares.ll
+++ b/llvm/test/Transforms/InstCombine/indexed-gep-compares.ll
@@ -292,7 +292,7 @@ define i1 @test7() {
 ; CHECK-NEXT:    [[CMP:%.*]] = phi i1 [ false, [[ENTRY:%.*]] ], [ true, [[BB7]] ]
 ; CHECK-NEXT:    br i1 [[CMP]], label [[BB10:%.*]], label [[BB7]]
 ; CHECK:       bb10:
-; CHECK-NEXT:    ret i1 true
+; CHECK-NEXT:    ret i1 [[CMP]]
 ;
 entry:
   br label %bb7
diff --git a/llvm/test/Transforms/InstCombine/known-bits.ll b/llvm/test/Transforms/InstCombine/known-bits.ll
index 8cfb987e422f38..3482a8e9759929 100644
--- a/llvm/test/Transforms/InstCombine/known-bits.ll
+++ b/llvm/test/Transforms/InstCombine/known-bits.ll
@@ -1664,9 +1664,11 @@ define i64 @pr92084(double %x) {
 ; CHECK-NEXT:    [[CMP:%.*]] = fcmp uno double [[X:%.*]], 0.000000e+00
 ; CHECK-NEXT:    br i1 [[CMP]], label [[IF_THEN1:%.*]], label [[IF_ELSE:%.*]]
 ; CHECK:       if.then1:
-; CHECK-NEXT:    br i1 true, label [[IF_ELSE]], label [[IF_THEN2:%.*]]
+; CHECK-NEXT:    br i1 [[CMP]], label [[IF_ELSE]], label [[IF_THEN2:%.*]]
 ; CHECK:       if.then2:
-; CHECK-NEXT:    ret i64 poison
+; CHECK-NEXT:    [[CAST:%.*]] = bitcast double [[X]] to i64
+; CHECK-NEXT:    [[AND:%.*]] = and i64 [[CAST]], 1
+; CHECK-NEXT:    ret i64 [[AND]]
 ; CHECK:       if.else:
 ; CHECK-NEXT:    ret i64 0
 ;
diff --git a/llvm/test/Transforms/InstCombine/phi-known-bits-operand-order.ll b/llvm/test/Transforms/InstCombine/phi-known-bits-operand-order.ll
index 6a054688753500..a9ebcf629a4029 100644
--- a/llvm/test/Transforms/InstCombine/phi-known-bits-operand-order.ll
+++ b/llvm/test/Transforms/InstCombine/phi-known-bits-operand-order.ll
@@ -16,8 +16,7 @@ define void @phi_recurrence_start_first() {
 ; CHECK-NEXT:    br i1 [[COND_V]], label [[IF_THEN:%.*]], label [[WHILE_END:%.*]]
 ; CHECK:       if.then:
 ; CHECK-NEXT:    [[START]] = add nuw nsw i32 [[CELL_0]], 1
-; CHECK-NEXT:    [[COND_V2:%.*]] = call i1 @cond()
-; CHECK-NEXT:    br i1 [[COND_V2]], label [[FOR_COND11:%.*]], label [[FOR_COND26]]
+; CHECK-NEXT:    br i1 [[COND_V]], label [[FOR_COND11:%.*]], label [[FOR_COND26]]
 ; CHECK:       for.cond11:
 ; CHECK-NEXT:    [[I_1:%.*]] = phi i32 [ [[START]], [[IF_THEN]] ], [ [[STEP:%.*]], [[FOR_COND11]] ]
 ; CHECK-NEXT:    [[CMP13:%.*]] = icmp ult i32 [[I_1]], 100
@@ -38,8 +37,7 @@ while.cond:                                       ; preds = %entry, %for.cond26
 
 if.then:                                          ; preds = %while.cond
   %start = add nsw i32 %cell.0, 1
-  %cond.v2 = call i1 @cond()
-  br i1 %cond.v2, label %for.cond11, label %for.cond26
+  br i1 %cond.v, label %for.cond11, label %for.cond26
 
 for.cond11:                                       ; preds = %for.cond11, %if.then
   %i.1 = phi i32 [ %start, %if.then ], [ %step, %for.cond11 ]
@@ -64,8 +62,7 @@ define void @phi_recurrence_step_first() {
 ; CHECK-NEXT:    br i1 [[COND_V]], label [[IF_THEN:%.*]], label [[WHILE_END:%.*]]
 ; CHECK:       if.then:
 ; CHECK-NEXT:    [[START]] = add nuw nsw i32 [[CELL_0]], 1
-; CHECK-NEXT:    [[COND_V2:%.*]] = call i1 @cond()
-; CHECK-NEXT:    br i1 [[COND_V2]], label [[FOR_COND11:%.*]], label [[FOR_COND26]]
+; CHECK-NEXT:    br i1 [[COND_V]], label [[FOR_COND11:%.*]], label [[FOR_COND26]]
 ; CHECK:       for.cond11:
 ; CHECK-NEXT:    [[I_1:%.*]] = phi i32 [ [[STEP:%.*]], [[FOR_COND11]] ], [ [[START]], [[IF_THEN]] ]
 ; CHECK-NEXT:    [[CMP13:%.*]] = icmp ult i32 [[I_1]], 100
@@ -86,8 +83,7 @@ while.cond:                                       ; preds = %entry, %for.cond26
 
 if.then:                                          ; preds = %while.cond
   %start = add nsw i32 %cell.0, 1
-  %cond.v2 = call i1 @cond()
-  br i1 %cond.v2, label %for.cond11, label %for.cond26
+  br i1 %cond.v, label %for.cond11, label %for.cond26
 
 for.cond11:                                       ; preds = %for.cond11, %if.then
   %i.1 = phi i32 [ %step, %for.cond11 ], [ %start, %if.then]
diff --git a/llvm/test/Transforms/InstCombine/phi.ll b/llvm/test/Transforms/InstCombine/phi.ll
index ba29f4290a9fa4..673c8f6c9488d6 100644
--- a/llvm/test/Transforms/InstCombine/phi.ll
+++ b/llvm/test/Transforms/InstCombine/phi.ll
@@ -1543,7 +1543,7 @@ define i1 @phi_knownnonzero_eq_multiuse_oricmp(i32 %n, i32 %s, ptr %P, i32 %val)
 ; CHECK-NEXT:    [[BOOL2:%.*]] = icmp eq i32 [[PHI]], 0
 ; CHECK-NEXT:    br label [[CLEANUP]]
 ; CHECK:       cleanup:
-; CHECK-NEXT:    [[FINAL:%.*]] = phi i1 [ false, [[IF_END]] ], [ [[BOOL2]], [[NEXT]] ]
+; CHECK-NEXT:    [[FINAL:%.*]] = phi i1 [ [[CMP1]], [[IF_END]] ], [ [[BOOL2]], [[NEXT]] ]
 ; CHECK-NEXT:    ret i1 [[FINAL]]
 ;
 entry:
@@ -1581,13 +1581,13 @@ define i1 @phi_knownnonzero_ne_multiuse_oricmp_commuted(i32 %n, i32 %s, ptr %P,
 ; CHECK:       if.end:
 ; CHECK-NEXT:    [[PHI:%.*]] = phi i32 [ 1, [[IF_THEN]] ], [ [[N]], [[ENTRY:%.*]] ]
 ; CHECK-NEXT:    [[ORPHI:%.*]] = or i32 [[VAL:%.*]], [[PHI]]
-; CHECK-NEXT:    [[CMP1_NOT:%.*]] = icmp eq i32 [[ORPHI]], 0
-; CHECK-NEXT:    br i1 [[CMP1_NOT]], label [[CLEANUP:%.*]], label [[NEXT:%.*]]
+; CHECK-NEXT:    [[CMP1:%.*]] = icmp ne i32 [[ORPHI]], 0
+; CHECK-NEXT:    br i1 [[CMP1]], label [[NEXT:%.*]], label [[CLEANUP:%.*]]
 ; CHECK:       next:
 ; CHECK-NEXT:    [[BOOL2:%.*]] = icmp ne i32 [[PHI]], 0
 ; CHECK-NEXT:    br label [[CLEANUP]]
 ; CHECK:       cleanup:
-; CHECK-NEXT:    [[FINAL:%.*]] = phi i1 [ false, [[IF_END]] ], [ [[BOOL2]], [[NEXT]] ]
+; CHECK-NEXT:    [[FINAL:%.*]] = phi i1 [ [[CMP1]], [[IF_END]] ], [ [[BOOL2]], [[NEXT]] ]
 ; CHECK-NEXT:    ret i1 [[FINAL]]
 ;
 entry:
@@ -1634,7 +1634,7 @@ define i1 @phi_knownnonzero_eq_multiuse_andicmp(i32 %n, i32 %s, ptr %P, i32 %val
 ; CHECK-NEXT:    [[BOOL2:%.*]] = icmp eq i32 [[PHI]], 0
 ; CHECK-NEXT:    br label [[CLEANUP]]
 ; CHECK:       cleanup:
-; CHECK-NEXT:    [[FINAL:%.*]] = phi i1 [ false, [[IF_END]] ], [ [[BOOL2]], [[NEXT]] ]
+; CHECK-NEXT:    [[FINAL:%.*]] = phi i1 [ [[CMP1]], [[IF_END]] ], [ [[BOOL2]], [[NEXT]] ]
 ; CHECK-NEXT:    ret i1 [[FINAL]]
 ;
 entry:
@@ -1675,13 +1675,13 @@ define i1 @phi_knownnonzero_ne_multiuse_andicmp(i32 %n, i32 %s, ptr %P, i32 %val
 ; CHECK:       if.end:
 ; CHECK-NEXT:    [[PHI:%.*]] = phi i32 [ [[SEL]], [[IF_THEN]] ], [ [[N]], [[ENTRY:%.*]] ]
 ; CHECK-NEXT:    [[ANDPHI:%.*]] = and i32 [[PHI]], [[VAL:%.*]]
-; CHECK-NEXT:    [[CMP1_NOT:%.*]] = icmp eq i32 [[ANDPHI]], 0
-; CHECK-NEXT:    br i1 [[CMP1_NOT]], label [[CLEANUP:%.*]], label [[NEXT:%.*]]
+; CHECK-NEXT:    [[CMP1:%.*]] = icmp ne i32 [[ANDPHI]], 0
+; CHECK-NEXT:    br i1 [[CMP1]], label [[NEXT:%.*]], label [[CLEANUP:%.*]]
 ; CHECK:       next:
 ; CHECK-NEXT:    [[BOOL2:%.*]] = icmp ne i32 [[PHI]], 0
 ; CHECK-NEXT:    br label [[CLEANUP]]
 ; CHECK:       cleanup:
-; CHECK-NEXT:    [[FINAL:%.*]] = phi i1 [ false, [[IF_END]] ], [ [[BOOL2]], [[NEXT]] ]
+; CHECK-NEXT:    [[FINAL:%.*]] = phi i1 [ [[CMP1]], [[IF_END]] ], [ [[BOOL2]], [[NEXT]] ]
 ; CHECK-NEXT:    ret i1 [[FINAL]]
 ;
 entry:
diff --git a/llvm/test/Transforms/InstCombine/pr44245.ll b/llvm/test/Transforms/InstCombine/pr44245.ll
index 5625cc67b73420..ee5ae2edb42dae 100644
--- a/llvm/test/Transforms/InstCombine/pr44245.ll
+++ b/llvm/test/Transforms/InstCombine/pr44245.ll
@@ -3,7 +3,7 @@
 
 ; This used to cause on infinite instcombine loop.
 
-define void @test(i1 %c, i1 %c2, i1 %c3, i1 %c4, i1 %c5, i1 %c6, i1 %c7, i1 %c8, i1 %c9, ptr %p) {
+define void @test(i1 %c, ptr %p) {
 ; CHECK-LABEL: @test(
 ; CHECK-NEXT:  bb16:
 ; CHECK-NEXT:    br i1 [[C:%.*]], label [[BB17:%.*]], label [[BB24:%.*]]
@@ -12,7 +12,7 @@ define void @test(i1 %c, i1 %c2, i1 %c3, i1 %c4, i1 %c5, i1 %c6, i1 %c7, i1 %c8,
 ; CHECK-NEXT:    store ptr [[I]], ptr [[P:%.*]], align 8
 ; CHECK-NEXT:    ret void
 ; CHECK:       bb24:
-; CHECK-NEXT:    br i1 [[C2:%.*]], label [[BB44:%.*]], label [[BB49:%.*]]
+; CHECK-NEXT:    br i1 [[C]], label [[BB44:%.*]], label [[BB49:%.*]]
 ; CHECK:       bb44:
 ; CHECK-NEXT:    [[TMP46:%.*]] = load ptr, ptr inttoptr (i64 16 to ptr), align 16
 ; CHECK-NEXT:    br label [[BB47]]
@@ -20,37 +20,37 @@ define void @test(i1 %c, i1 %c2, i1 %c3, i1 %c4, i1 %c5, i1 %c6, i1 %c7, i1 %c8,
 ; CHECK-NEXT:    [[DOTIN1]] = phi ptr [ [[DOTIN:%.*]], [[BB150:%.*]] ], [ [[TMP122:%.*]], [[BB119:%.*]] ], [ [[TMP103:%.*]], [[BB101:%.*]] ], [ [[TMP93:%.*]], [[BB91:%.*]] ], [ [[TMP83:%.*]], [[BB81:%.*]] ], [ [[TMP70:%.*]], [[BB67:%.*]] ], [ [[TMP58:%.*]], [[BB56:%.*]] ], [ [[TMP46]], [[BB44]] ]
 ; CHECK-NEXT:    br label [[BB17]]
 ; CHECK:       bb49:
-; CHECK-NEXT:    br i1 [[C3:%.*]], label [[BB56]], label [[BB59:%.*]]
+; CHECK-NEXT:    br i1 [[C]], label [[BB56]], label [[BB59:%.*]]
 ; CHECK:       bb56:
 ; CHECK-NEXT:    [[TMP58]] = load ptr, ptr inttoptr (i64 16 to ptr), align 16
 ; CHECK-NEXT:    br label [[BB47]]
 ; CHECK:       bb59:
-; CHECK-NEXT:    br i1 [[C4:%.*]], label [[BB67]], label [[BB71:%.*]]
+; CHECK-NEXT:    br i1 [[C]], label [[BB67]], label [[BB71:%.*]]
 ; CHECK:       bb67:
 ; CHECK-NEXT:    [[TMP70]] = load ptr, ptr inttoptr (i64 16 to ptr), align 16
 ; CHECK-NEXT:    br label [[BB47]]
 ; CHECK:       bb71:
-; CHECK-NEXT:    br i1 [[C5:%.*]], label [[BB81]], label [[BB84:%.*]]
+; CHECK-NEXT:    br i1 [[C]], label [[BB81]], label [[BB84:%.*]]
 ; CHECK:       bb81:
 ; CHECK-NEXT:    [[TMP83]] = load ptr, ptr inttoptr (i64 16 to ptr), align 16
 ; CHECK-NEXT:    br label [[BB47]]
 ; CHECK:       bb84:
-; CHECK-NEXT:    br i1 [[C6:%.*]], label [[BB91]], label [[BB94:%.*]]
+; CHECK-NEXT:    br i1 [[C]], label [[BB91]], label [[BB94:%.*]]
 ; CHECK:       bb91:
 ; CHECK-NEXT:    [[TMP93]] = load ptr, ptr inttoptr (i64 16 to ptr), align 16
 ; CHECK-NEXT:    br label [[BB47]]
 ; CHECK:       bb94:
-; CHECK-NEXT:    br i1 [[C7:%.*]], label [[BB101]], label [[BB104:%.*]]
+; CHECK-NEXT:    br i1 [[C]], label [[BB101]], label [[BB104:%.*]]
 ; CHECK:       bb101:
 ; CHECK-NEXT:    [[TMP103]] = load ptr, ptr inttoptr (i64 16 to ptr), align 16
 ; CHECK-NEXT:    br label [[BB47]]
 ; CHECK:       bb104:
-; CHECK-NEXT:    br i1 [[C8:%.*]], label [[BB119]], label [[BB123:%.*]]
+; CHECK-NEXT:    br i1 [[C]], label [[BB119]], label [[BB123:%.*]]
 ; CHECK:       bb119:
 ; CHECK-NEXT:    [[TMP122]] = load ptr, ptr inttoptr (i64 16 to ptr), align 16
 ; CHECK-NEXT:    br label [[BB47]]
 ; CHECK:       bb123:
-; CHECK-NEXT:    br i1 [[C9:%.*]], label [[BB147:%.*]], label [[BB152:%.*]]
+; CHECK-NEXT:    br i1 [[C]], label [[BB147:%.*]], label [[BB152:%.*]]
 ; CHECK:       bb147:
 ; CHECK-NEXT:    [[TMP149:%.*]] = load ptr, ptr inttoptr (i64 16 to ptr), align 16
 ; CHECK-NEXT:    br label [[BB150]]
@@ -70,7 +70,7 @@ bb17:                                             ; preds = %bb47, %bb16
   ret void
 
 bb24:                                             ; preds = %bb16
-  br i1 %c2, label %bb44, label %bb49
+  br i1 %c, label %bb44, label %bb49
 
 bb44:                                             ; preds = %bb24
   %tmp46 = load ptr, ptr inttoptr (i64 16 to ptr), align 16
@@ -81,49 +81,49 @@ bb47:                                             ; preds = %bb150, %bb119, %bb1
   br label %bb17
 
 bb49:                                             ; preds = %bb24
-  br i1 %c3, label %bb56, label %bb59
+  br i1 %c, label %bb56, label %bb59
 
 bb56:                                             ; preds = %bb49
   %tmp58 = load ptr, ptr inttoptr (i64 16 to ptr), align 16
   br label %bb47
 
 bb59:                                             ; preds = %bb49
-  br i1 %c4, label %bb67, label %bb71
+  br i1 %c, label %bb67, label %bb71
 
 bb67:                                             ; preds = %bb59
   %tmp70 = load ptr, ptr inttoptr (i64 16 to ptr), align 16
   br label %bb47
 
 bb71:                                             ; preds = %bb59
-  br i1 %c5, label %bb81, label %bb84
+  br i1 %c, label %bb81, label %bb84
 
 bb81:                                             ; preds = %bb71
   %tmp83 = load ptr, ptr inttoptr (i64 16 to ptr), align 16
   br label %bb47
 
 bb84:                                             ; preds = %bb71
-  br i1 %c6, label %bb91, label %bb94
+  br i1 %c, label %bb91, label %bb94
 
 bb91:                                             ; preds = %bb84
   %tmp93 = load ptr, ptr in...
[truncated]

@ronlieb ronlieb requested review from jhuber6 and jplehr September 1, 2024 19:49
@jhuber6
Copy link
Contributor

jhuber6 commented Sep 1, 2024

Do we have a reproducer?

Copy link
Member

@dtcxzyw dtcxzyw left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please provide a reproducer.

@jplehr
Copy link
Contributor

jplehr commented Sep 2, 2024

It seems fixed with #106075

@ronlieb ronlieb closed this Sep 2, 2024
@nunoplopes nunoplopes deleted the revert-105510-perf/branch-dom-rep branch December 28, 2024 09:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants