diff --git a/src/main/java/com/android/tools/r8/ir/conversion/passes/NaturalIntLoopRemover.java b/src/main/java/com/android/tools/r8/ir/conversion/passes/NaturalIntLoopRemover.java
index 5d078fe..a52a144 100644
--- a/src/main/java/com/android/tools/r8/ir/conversion/passes/NaturalIntLoopRemover.java
+++ b/src/main/java/com/android/tools/r8/ir/conversion/passes/NaturalIntLoopRemover.java
@@ -18,7 +18,6 @@
 import com.android.tools.r8.ir.conversion.passes.result.CodeRewriterResult;
 import com.android.tools.r8.ir.optimize.AffectedValues;
 import com.android.tools.r8.utils.WorkList;
-import com.google.common.collect.Sets;
 import java.util.Set;
 
 /**
@@ -108,7 +107,7 @@
     if (!analyzeLoopExit(loopBody, comparison, builder)) {
       return false;
     }
-    if (!analyzePhiUses(loopBody, comparison, builder)) {
+    if (!analyzePhiUses(loopBody, comparison)) {
       return false;
     }
 
@@ -122,25 +121,10 @@
   }
 
   /**
-   * The loop unroller removes phis corresponding to the loop backjump. There are three scenarios:
-   * (1) The loop has a single exit point analyzed, phis used outside the loop are replaced by the
-   *     value at the end of the loop body.
-   * (2) The phis are unused outside the loop, and they are simply removed.
-   * (3) The loop has multiple exits and the phis are used outside the loop, this would require
-   *     dealing with complex merge point and postponing phis after the loop, we bail out.
+   * The loop unroller removes phis corresponding to the loop backjump if they are not used outside
+   * the loop.
    */
-  private boolean analyzePhiUses(
-      Set<BasicBlock> loopBody, If comparison, NaturalIntLoopWithKnowIterations.Builder builder) {
-    // Check for single exit scenario.
-    Set<BasicBlock> successors = Sets.newIdentityHashSet();
-    for (BasicBlock basicBlock : loopBody) {
-      successors.addAll(basicBlock.getSuccessors());
-    }
-    successors.removeAll(loopBody);
-    if (successors.size() == 1) {
-      assert successors.iterator().next() == builder.getLoopExit();
-      return true;
-    }
+  private boolean analyzePhiUses(Set<BasicBlock> loopBody, If comparison) {
     // Check phis are unused outside the loop.
     for (Phi phi : comparison.getBlock().getPhis()) {
       for (Instruction use : phi.uniqueUsers()) {
diff --git a/src/test/java/com/android/tools/r8/regress/B341618078Test.java b/src/test/java/com/android/tools/r8/ir/optimize/loops/B341618078Test.java
similarity index 94%
rename from src/test/java/com/android/tools/r8/regress/B341618078Test.java
rename to src/test/java/com/android/tools/r8/ir/optimize/loops/B341618078Test.java
index 640eb4d..85d5d98 100644
--- a/src/test/java/com/android/tools/r8/regress/B341618078Test.java
+++ b/src/test/java/com/android/tools/r8/ir/optimize/loops/B341618078Test.java
@@ -1,7 +1,7 @@
 // Copyright (c) 2024, the R8 project authors. Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
-package com.android.tools.r8.regress;
+package com.android.tools.r8.ir.optimize.loops;
 
 import static org.junit.Assume.assumeTrue;
 
@@ -54,8 +54,7 @@
         .addKeepMainRule(TestClass.class)
         .setMinApi(parameters)
         .run(parameters.getRuntime(), TestClass.class)
-        // TODO(b/341618078): Should be EXPECTED_OUTPUT.
-        .assertSuccessWithOutputLines("1", "1");
+        .assertSuccessWithOutput(EXPECTED_OUTPUT);
   }
 
   static class TestClass {
