Extend bridge hoisting to methods not declared as bridges

Change-Id: Id3dc082a127a121639a9c76f1d034b0f95d8b47b
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/info/bridge/BridgeAnalyzer.java b/src/main/java/com/android/tools/r8/ir/optimize/info/bridge/BridgeAnalyzer.java
index fe326c8..be806b4 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/info/bridge/BridgeAnalyzer.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/info/bridge/BridgeAnalyzer.java
@@ -24,8 +24,7 @@
 
   /** Returns a {@link BridgeInfo} object describing this method if it is recognized as a bridge. */
   public static BridgeInfo analyzeMethod(DexEncodedMethod method, IRCode code) {
-    // TODO(b/154263783): Consider computing BridgeInfo also for non-declared bridges.
-    if (!method.isBridge() || code.blocks.size() > 1) {
+    if (code.blocks.size() > 1) {
       return failure();
     }
 
diff --git a/src/test/java/com/android/tools/r8/bridgeremoval/B77836766.java b/src/test/java/com/android/tools/r8/bridgeremoval/B77836766.java
index d08bb2f..73f2712 100644
--- a/src/test/java/com/android/tools/r8/bridgeremoval/B77836766.java
+++ b/src/test/java/com/android/tools/r8/bridgeremoval/B77836766.java
@@ -294,7 +294,7 @@
 
               // Cls1#foo and Cls2#bar should refer to Base#foo.
 
-              MethodSubject barInCls2 = cls2Subject.method("void", "bar", "java.lang.String");
+              MethodSubject barInCls2 = baseSubject.method("void", "bar", "java.lang.String");
               assertThat(barInCls2, isPresent());
 
               // Cls1#foo has been moved to Base#foo as a result of bridge hoisting.
@@ -404,7 +404,7 @@
 
               // DerivedString2#bar should refer to Base#foo.
 
-              MethodSubject barInSub = subSubject.method("void", "bar", "java.lang.String");
+              MethodSubject barInSub = baseSubject.method("void", "bar", "java.lang.String");
               assertThat(barInSub, isPresent());
 
               if (parameters.isDexRuntime()) {
diff --git a/src/test/java/com/android/tools/r8/ir/optimize/devirtualize/InvokeSuperToInvokeVirtualTest.java b/src/test/java/com/android/tools/r8/ir/optimize/devirtualize/InvokeSuperToInvokeVirtualTest.java
index b21bcab..e4b2d91 100644
--- a/src/test/java/com/android/tools/r8/ir/optimize/devirtualize/InvokeSuperToInvokeVirtualTest.java
+++ b/src/test/java/com/android/tools/r8/ir/optimize/devirtualize/InvokeSuperToInvokeVirtualTest.java
@@ -54,6 +54,9 @@
   }
 
   private void inspect(CodeInspector inspector) {
+    ClassSubject aClassSubject = inspector.clazz(A.class);
+    assertThat(aClassSubject, isPresent());
+
     ClassSubject bClassSubject = inspector.clazz(B.class);
     assertThat(bClassSubject, isPresent());
 
@@ -63,7 +66,8 @@
     assertTrue(
         negativeTestSubject.streamInstructions().noneMatch(InstructionSubject::isInvokeVirtual));
 
-    MethodSubject positiveTestSubject = bClassSubject.uniqueMethodWithName("positiveTest");
+    // B.positiveTest() is moved to A as a result of bridge hoisting.
+    MethodSubject positiveTestSubject = aClassSubject.uniqueMethodWithName("positiveTest");
     assertThat(positiveTestSubject, isPresent());
     assertTrue(positiveTestSubject.streamInstructions().noneMatch(this::isInvokeSuper));
     assertTrue(