blob: 0c0bac6731279fcb91ac8b42e7801f24a1e570a8 [file] [log] [blame]
// Copyright (c) 2021, 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.inliner;
import static org.junit.Assert.assertFalse;
import com.android.tools.r8.TestBase;
import com.android.tools.r8.utils.codeinspector.InstructionSubject;
import org.junit.Test;
class Foobar {
public static void main(String[] args) {
System.out.println("Value: " + (new Bar()).returnPlusConstant(42));
}
}
class Bar {
public int returnPlusConstant(int value) {
return value + 42;
}
}
public class InliningOptimize extends TestBase {
@Test
public void test() throws Exception {
testForR8(Backend.DEX)
.addProgramClasses(Bar.class, Foobar.class)
.addKeepRules("-keep,allowoptimization class ** {\n" + "*;\n" + "}")
.compile()
.inspect(
inspector -> {
inspector
.clazz(Foobar.class)
.mainMethod()
.iterateInstructions(InstructionSubject::isInvoke)
.forEachRemaining(
invoke -> {
assertFalse(
invoke.getMethod().name.toString().contains("returnPlusConstant"));
});
})
.run(Foobar.class)
.assertSuccessWithOutputLines("Value: 84");
}
}