Reland "Propagating values from if clauses to its successors"

This reverts commit fa1034c563b44c4f557814c50e2678e14dcd1d13.

Reason for revert: Relanding after float/double fix. In short,
don't deal with floats/doubles since they bring a lot of edge cases e.g.

  if (f == 0.0f) {
    // f is not guaranteed to be 0.0f, e.g. it could be -0.0f.
  }

Bug: 240543764
Change-Id: I400bdab71dba0934e6f1740538fe6e6c0a7bf5fc
diff --git a/test/564-checker-inline-loop/src/Main.java b/test/564-checker-inline-loop/src/Main.java
index 6929913..41eca35 100644
--- a/test/564-checker-inline-loop/src/Main.java
+++ b/test/564-checker-inline-loop/src/Main.java
@@ -21,9 +21,6 @@
   /// CHECK-DAG:                      Return [<<Invoke>>]
 
   /// CHECK-START: int Main.inlineLoop() inliner (after)
-  /// CHECK-NOT:                      InvokeStaticOrDirect
-
-  /// CHECK-START: int Main.inlineLoop() inliner (after)
   /// CHECK-DAG:     <<Constant:i\d+>>   IntConstant 42
   /// CHECK-DAG:                         Return [<<Constant>>]
 
@@ -31,31 +28,31 @@
   /// CHECK:                         Goto loop:{{B\d+}}
 
   public static int inlineLoop() {
-    return loopMethod();
+    return $inline$loopMethod();
   }
 
   /// CHECK-START: void Main.inlineWithinLoop() inliner (before)
   /// CHECK:      InvokeStaticOrDirect
 
-  /// CHECK-START: void Main.inlineWithinLoop() inliner (after)
-  /// CHECK-NOT:  InvokeStaticOrDirect
-
   /// CHECK-START: void Main.inlineWithinLoop() licm (after)
   /// CHECK-DAG:  Goto loop:<<OuterLoop:B\d+>> outer_loop:none
   /// CHECK-DAG:  Goto outer_loop:<<OuterLoop>>
 
   public static void inlineWithinLoop() {
     while (doLoop) {
-      loopMethod();
+      $inline$loopMethod();
     }
   }
 
-  public static int loopMethod() {
-    while (doLoop) {}
+  public static int $inline$loopMethod() {
+    // We use `otherDoLoop` here so we don't propagate the knowledge that `doLoop` is true when
+    // inlining from `inlineWithinLoop`.
+    while (otherDoLoop) {}
     return 42;
   }
 
   public static boolean doLoop = false;
+  public static boolean otherDoLoop = false;
 
   public static void main(String[] args) {
     inlineLoop();