Revert "Add tests for improving the precision of instance member value propagation"
This reverts commit ddcd7c0e9b466410a5e55468241bbafc539b7def.
Reason for revert: The new test is failing, reverting this to make it easier for us to go green (since we already have other failures)
Change-Id: If266967429bf4d698279e6f23833876664fc5adf
diff --git a/src/test/java/com/android/tools/r8/ir/optimize/membervaluepropagation/FinalFieldWithDefaultValueAssignmentPropagationTest.java b/src/test/java/com/android/tools/r8/ir/optimize/membervaluepropagation/FinalFieldWithDefaultValueAssignmentPropagationTest.java
deleted file mode 100644
index 0f714ef..0000000
--- a/src/test/java/com/android/tools/r8/ir/optimize/membervaluepropagation/FinalFieldWithDefaultValueAssignmentPropagationTest.java
+++ /dev/null
@@ -1,97 +0,0 @@
-// Copyright (c) 2020, 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.ir.optimize.membervaluepropagation;
-
-import static com.android.tools.r8.utils.codeinspector.Matchers.isPresent;
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.junit.Assert.assertFalse;
-
-import com.android.tools.r8.NeverInline;
-import com.android.tools.r8.TestBase;
-import com.android.tools.r8.TestParameters;
-import com.android.tools.r8.TestParametersCollection;
-import com.android.tools.r8.utils.codeinspector.ClassSubject;
-import com.android.tools.r8.utils.codeinspector.CodeInspector;
-import com.android.tools.r8.utils.codeinspector.InstructionSubject;
-import com.android.tools.r8.utils.codeinspector.MethodSubject;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.Parameterized;
-import org.junit.runners.Parameterized.Parameters;
-
-@RunWith(Parameterized.class)
-public class FinalFieldWithDefaultValueAssignmentPropagationTest extends TestBase {
-
- private final TestParameters parameters;
-
- @Parameters(name = "{0}")
- public static TestParametersCollection data() {
- return getTestParameters().withAllRuntimesAndApiLevels().build();
- }
-
- public FinalFieldWithDefaultValueAssignmentPropagationTest(TestParameters parameters) {
- this.parameters = parameters;
- }
-
- @Test
- public void test() throws Exception {
- testForR8(parameters.getBackend())
- .addInnerClasses(FinalFieldWithDefaultValueAssignmentPropagationTest.class)
- .addKeepMainRule(TestClass.class)
- .enableInliningAnnotations()
- .setMinApi(parameters.getApiLevel())
- .compile()
- .inspect(this::inspect)
- .run(parameters.getRuntime(), TestClass.class)
- .assertSuccessWithOutputLines("false");
- }
-
- private void inspect(CodeInspector inspector) {
- ClassSubject testClassSubject = inspector.clazz(TestClass.class);
- assertThat(testClassSubject, isPresent());
- // TODO(b/147799637): Should be absent.
- assertThat(testClassSubject.uniqueMethodWithName("dead"), isPresent());
-
- ClassSubject configClassSubject = inspector.clazz(Config.class);
- assertThat(configClassSubject, isPresent());
-
- MethodSubject configConstructorSubject = configClassSubject.init();
- assertThat(configConstructorSubject, isPresent());
- // TODO(b/147799637): Should be true.
- assertFalse(
- configConstructorSubject.streamInstructions().noneMatch(InstructionSubject::isInstancePut));
- }
-
- static class TestClass {
-
- public static void main(String[] args) {
- if (new Config().alwaysFalse) {
- dead();
- }
- }
-
- @NeverInline
- static void dead() {
- System.out.println("Dead!");
- }
- }
-
- static class Config {
-
- final boolean alwaysFalse;
-
- Config() {
- // An instruction that causes alwaysFalse to be read.
- System.out.println(this);
- // Since alwaysFalse is final we can remove the assignment, even if the receiver escapes.
- alwaysFalse = false;
- }
-
- @Override
- public String toString() {
- return Boolean.toString(alwaysFalse);
- }
- }
-}
diff --git a/src/test/java/com/android/tools/r8/ir/optimize/membervaluepropagation/NonFinalFieldWithDefaultValueAssignmentPropagationTest.java b/src/test/java/com/android/tools/r8/ir/optimize/membervaluepropagation/NonFinalFieldWithDefaultValueAssignmentPropagationTest.java
deleted file mode 100644
index 9d56af9..0000000
--- a/src/test/java/com/android/tools/r8/ir/optimize/membervaluepropagation/NonFinalFieldWithDefaultValueAssignmentPropagationTest.java
+++ /dev/null
@@ -1,96 +0,0 @@
-// Copyright (c) 2020, 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.ir.optimize.membervaluepropagation;
-
-import static com.android.tools.r8.utils.codeinspector.Matchers.isPresent;
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.junit.Assert.assertFalse;
-
-import com.android.tools.r8.NeverClassInline;
-import com.android.tools.r8.NeverInline;
-import com.android.tools.r8.TestBase;
-import com.android.tools.r8.TestParameters;
-import com.android.tools.r8.TestParametersCollection;
-import com.android.tools.r8.utils.codeinspector.ClassSubject;
-import com.android.tools.r8.utils.codeinspector.CodeInspector;
-import com.android.tools.r8.utils.codeinspector.InstructionSubject;
-import com.android.tools.r8.utils.codeinspector.MethodSubject;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.Parameterized;
-import org.junit.runners.Parameterized.Parameters;
-
-@RunWith(Parameterized.class)
-public class NonFinalFieldWithDefaultValueAssignmentPropagationTest extends TestBase {
-
- private final TestParameters parameters;
-
- @Parameters(name = "{0}")
- public static TestParametersCollection data() {
- return getTestParameters().withAllRuntimesAndApiLevels().build();
- }
-
- public NonFinalFieldWithDefaultValueAssignmentPropagationTest(TestParameters parameters) {
- this.parameters = parameters;
- }
-
- @Test
- public void test() throws Exception {
- testForR8(parameters.getBackend())
- .addInnerClasses(NonFinalFieldWithDefaultValueAssignmentPropagationTest.class)
- .addKeepMainRule(TestClass.class)
- .enableNeverClassInliningAnnotations()
- .enableInliningAnnotations()
- .setMinApi(parameters.getApiLevel())
- .compile()
- .inspect(this::inspect)
- .run(parameters.getRuntime(), TestClass.class)
- .assertSuccessWithOutputLines("false");
- }
-
- private void inspect(CodeInspector inspector) {
- ClassSubject testClassSubject = inspector.clazz(TestClass.class);
- assertThat(testClassSubject, isPresent());
- // TODO(b/147799637): Should be absent.
- assertThat(testClassSubject.uniqueMethodWithName("dead"), isPresent());
-
- ClassSubject configClassSubject = inspector.clazz(Config.class);
- assertThat(configClassSubject, isPresent());
-
- MethodSubject configConstructorSubject = configClassSubject.init();
- assertThat(configConstructorSubject, isPresent());
- // TODO(b/147799637): Should be true.
- assertFalse(
- configConstructorSubject.streamInstructions().noneMatch(InstructionSubject::isInstancePut));
- }
-
- static class TestClass {
-
- public static void main(String[] args) {
- if (new Config().alwaysFalse) {
- dead();
- }
- }
-
- @NeverInline
- static void dead() {
- System.out.println("Dead!");
- }
- }
-
- @NeverClassInline
- static class Config {
-
- boolean alwaysFalse;
-
- Config() {
- // An instruction that cannot read alwaysFalse, because the receiver has not escaped
- // (except into Object.<init>()).
- System.out.println("Hello world!");
- // Since the receiver has not escaped, we can remove the assignment.
- alwaysFalse = false;
- }
- }
-}
diff --git a/src/test/java/com/android/tools/r8/ir/optimize/membervaluepropagation/NonFinalFieldWithNonDefaultValueAssignmentPropagationTest.java b/src/test/java/com/android/tools/r8/ir/optimize/membervaluepropagation/NonFinalFieldWithNonDefaultValueAssignmentPropagationTest.java
deleted file mode 100644
index 0ca6995..0000000
--- a/src/test/java/com/android/tools/r8/ir/optimize/membervaluepropagation/NonFinalFieldWithNonDefaultValueAssignmentPropagationTest.java
+++ /dev/null
@@ -1,96 +0,0 @@
-// Copyright (c) 2020, 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.ir.optimize.membervaluepropagation;
-
-import static com.android.tools.r8.utils.codeinspector.Matchers.isPresent;
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.junit.Assert.assertFalse;
-
-import com.android.tools.r8.NeverClassInline;
-import com.android.tools.r8.NeverInline;
-import com.android.tools.r8.TestBase;
-import com.android.tools.r8.TestParameters;
-import com.android.tools.r8.TestParametersCollection;
-import com.android.tools.r8.utils.codeinspector.ClassSubject;
-import com.android.tools.r8.utils.codeinspector.CodeInspector;
-import com.android.tools.r8.utils.codeinspector.InstructionSubject;
-import com.android.tools.r8.utils.codeinspector.MethodSubject;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.Parameterized;
-import org.junit.runners.Parameterized.Parameters;
-
-@RunWith(Parameterized.class)
-public class NonFinalFieldWithNonDefaultValueAssignmentPropagationTest extends TestBase {
-
- private final TestParameters parameters;
-
- @Parameters(name = "{0}")
- public static TestParametersCollection data() {
- return getTestParameters().withAllRuntimesAndApiLevels().build();
- }
-
- public NonFinalFieldWithNonDefaultValueAssignmentPropagationTest(TestParameters parameters) {
- this.parameters = parameters;
- }
-
- @Test
- public void test() throws Exception {
- testForR8(parameters.getBackend())
- .addInnerClasses(NonFinalFieldWithNonDefaultValueAssignmentPropagationTest.class)
- .addKeepMainRule(TestClass.class)
- .enableNeverClassInliningAnnotations()
- .enableInliningAnnotations()
- .setMinApi(parameters.getApiLevel())
- .compile()
- .inspect(this::inspect)
- .run(parameters.getRuntime(), TestClass.class)
- .assertSuccessWithOutputLines("true");
- }
-
- private void inspect(CodeInspector inspector) {
- ClassSubject testClassSubject = inspector.clazz(TestClass.class);
- assertThat(testClassSubject, isPresent());
- // TODO(b/147799637): Should be absent.
- assertThat(testClassSubject.uniqueMethodWithName("dead"), isPresent());
-
- ClassSubject configClassSubject = inspector.clazz(Config.class);
- assertThat(configClassSubject, isPresent());
-
- MethodSubject configConstructorSubject = configClassSubject.init();
- assertThat(configConstructorSubject, isPresent());
- // TODO(b/147799637): Should be true.
- assertFalse(
- configConstructorSubject.streamInstructions().noneMatch(InstructionSubject::isInstancePut));
- }
-
- static class TestClass {
-
- public static void main(String[] args) {
- if (!new Config().alwaysTrue) {
- dead();
- }
- }
-
- @NeverInline
- static void dead() {
- System.out.println("Dead!");
- }
- }
-
- @NeverClassInline
- static class Config {
-
- boolean alwaysTrue;
-
- Config() {
- // An instruction that cannot read alwaysTrue, because the receiver has not escaped
- // (except into Object.<init>()).
- System.out.println("Hello world!");
- // Since the receiver has not escaped, we are guaranteed that all reads will evaluate to true.
- alwaysTrue = true;
- }
- }
-}