RFR: 8275086: compiler/c2/irTests/TestPostParseCallDevirtualization.java fails when compiler1 is disabled
Christian Hagedorn
chagedorn at openjdk.java.net
Tue Oct 12 07:43:51 UTC 2021
On Tue, 12 Oct 2021 02:49:53 GMT, SUN Guoyun <duke at openjdk.java.net> wrote:
> Hi all,
> Jtreg test case compiler/c2/irTests/TestPostParseCallDevirtualization.java fails for fastdebug mode on x86/aarch64/mips architecture when "--with-jvm-features=-compiler1" be used. the failed info is:
>
> <pre><code class="shell">
> One or more @IR rules failed:
>
> Failed IR Rules (1)
> ------------------
> - Method "public int compiler.c2.irTests.TestPostParseCallDevirtualization.testMethodHandleCallWithCCP() throws java.lang.Throwable":
> * @IR rule 1: "@compiler.lib.ir_framework.IR(failOn={"#PRE#(\\\\d+(\\\\s){2}(CallStaticJava.*)+(\\\\s){2}===.*#IS_REPLACED#)", "invokeBasic"}, applyIf={}, applyIfAnd={}, applyIfOr={}, counts={"#PRE#(\\\\d+(\\\\s){2}(CallStaticJava.*)+(\\\\s){2}===.*#IS_REPLACED#)", "invokeStatic", "= 1"}, applyIfNot={})"
> - failOn: Graph contains forbidden nodes:
> Regex 1: (\\d+(\\s){2}(CallStaticJava.*)+(\\s){2}===.*invokeBasic)
> Matched forbidden node:
> 280 CallStaticJava === 5 6 7 8 1 ( 188 1 1 1 1 1 1 ) [[ 281 282 283 285 ]] # Static java.lang.invoke.MethodHandle::invokeBasic
> - counts: Graph contains wrong number of nodes:
> Regex 1: (\\d+(\\s){2}(CallStaticJava.*)+(\\s){2}===.*invokeStatic)
> Expected 1 but found 0 nodes.
>
>>>> Check stdout for compilation output of the failed methods
> </code></pre>
>
> This is a patch to fix this problem. Please help review it.
>
> Thanks,
> Sun Guoyun
Though this issue is about excluding C1, I think the IR framework generally does not handle the case if C2 is excluded in the build (i.e. client VM). It only bails out of IR matching if C2 is excluded by command line flags. I will file a bug for it.
-------------
PR: https://git.openjdk.java.net/jdk/pull/5903
More information about the hotspot-compiler-dev
mailing list