JDK-8305781 : compiler/c2/irTests/TestVectorizationMultiInvar.java failed with "IRViolationException: There were one or multiple IR rule failures."
  • Type: Bug
  • Component: hotspot
  • Sub-Component: compiler
  • Affected Version: 21
  • Priority: P3
  • Status: Resolved
  • Resolution: Fixed
  • OS: linux
  • CPU: x86_64
  • Submitted: 2023-04-09
  • Updated: 2023-04-24
  • Resolved: 2023-04-18
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
JDK 21
21 b19Fixed
Related Reports
Relates :  
Description
The following test failed in the JDK21 CI:

compiler/c2/irTests/TestVectorizationMultiInvar.java

Here's a snippet from the log file:

----------System.err:(47/5471)*----------

Command Line:
/opt/mach5/mesos/work_dir/jib-master/install/jdk-21+18-1444/linux-x64-debug.jdk/jdk-21/fastdebug/bin/java -DReproduce=true -cp /opt/mach5/mesos/work_dir/slaves/741e9afd-8c02-45c3-b2e2-9db1450d0832-S14094/frameworks/1735e8a2-a1db-478c-8104-60c8b0af87dd-0196/executors/2a167a5f-1023-4da0-947b-b96cf21464b2/runs/5ed7569c-06de-44cc-a292-4d3bdaef543d/testoutput/test-support/jtreg_open_test_hotspot_jtreg_hotspot_vector_1/classes/2/compiler/c2/irTests/TestVectorizationMultiInvar.d:/opt/mach5/mesos/work_dir/jib-master/install/jdk-21+18-1444/src.full/open/test/hotspot/jtreg/compiler/c2/irTests:/opt/mach5/mesos/work_dir/slaves/741e9afd-8c02-45c3-b2e2-9db1450d0832-S14094/frameworks/1735e8a2-a1db-478c-8104-60c8b0af87dd-0196/executors/2a167a5f-1023-4da0-947b-b96cf21464b2/runs/5ed7569c-06de-44cc-a292-4d3bdaef543d/testoutput/test-support/jtreg_open_test_hotspot_jtreg_hotspot_vector_1/classes/2/test/lib:/opt/mach5/mesos/work_dir/slaves/741e9afd-8c02-45c3-b2e2-9db1450d0832-S14094/frameworks/1735e8a2-a1db-478c-8104-60c8b0af87dd-0196/executors/2a167a5f-1023-4da0-947b-b96cf21464b2/runs/5ed7569c-06de-44cc-a292-4d3bdaef543d/testoutput/test-support/jtreg_open_test_hotspot_jtreg_hotspot_vector_1/classes/2:/opt/mach5/mesos/work_dir/jib-master/install/jtreg/7.1.1/1/bundles/jtreg-7.1.1+1.zip/jtreg/lib/jtreg.jar:/opt/mach5/mesos/work_dir/jib-master/install/jtreg/7.1.1/1/bundles/jtreg-7.1.1+1.zip/jtreg/lib/junit-platform-console-standalone-1.8.2.jar:/opt/mach5/mesos/work_dir/jib-master/install/jtreg/7.1.1/1/bundles/jtreg-7.1.1+1.zip/jtreg/lib/testng-7.3.0.jar:/opt/mach5/mesos/work_dir/jib-master/install/jtreg/7.1.1/1/bundles/jtreg-7.1.1+1.zip/jtreg/lib/jcommander-1.78.jar:/opt/mach5/mesos/work_dir/jib-master/install/jtreg/7.1.1/1/bundles/jtreg-7.1.1+1.zip/jtreg/lib/guice-4.2.3.jar -Djava.library.path=/opt/mach5/mesos/work_dir/jib-master/install/jdk-21+18-1444/linux-x64-debug.test/hotspot/jtreg/native -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -XX:MaxRAMPercentage=4.16667 -Dtest.boot.jdk=/opt/mach5/mesos/work_dir/jib-master/install/jdk/19/36/bundles/linux-x64/jdk-19_linux-x64_bin.tar.gz/jdk-19 -Djava.io.tmpdir=/opt/mach5/mesos/work_dir/slaves/741e9afd-8c02-45c3-b2e2-9db1450d0832-S14094/frameworks/1735e8a2-a1db-478c-8104-60c8b0af87dd-0196/executors/2a167a5f-1023-4da0-947b-b96cf21464b2/runs/5ed7569c-06de-44cc-a292-4d3bdaef543d/testoutput/test-support/jtreg_open_test_hotspot_jtreg_hotspot_vector_1/tmp -XX:UseAVX=0 -XX:UseSSE=3 -Dir.framework.server.port=35395 --add-modules java.base --add-exports java.base/jdk.internal.misc=ALL-UNNAMED -XX:+PrintCompilation -XX:+UnlockDiagnosticVMOptions -XX:+LogCompilation -XX:CompilerDirectivesFile=test-vm-compile-commands-pid-19310.log -XX:CompilerDirectivesLimit=31 -XX:-OmitStackTraceInFastThrow -DShouldDoIRVerification=true -XX:-BackgroundCompilation -XX:CompileCommand=quiet compiler.lib.ir_framework.test.TestVM compiler.c2.irTests.TestVectorizationMultiInvar

One or more @IR rules failed:

Failed IR Rules (1) of Methods (1)
----------------------------------
1) Method "public static void compiler.c2.irTests.TestVectorizationMultiInvar.testByteLong1(byte[],long[])" - [Failed IR rules: 1]:
   * @IR rule 1: "@compiler.lib.ir_framework.IR(applyIfCPUFeatureAnd={}, phase={DEFAULT}, applyIf={}, applyIfCPUFeatureOr={}, applyIfCPUFeature={}, counts={"_#LOAD_VECTOR#_", ">=1", "_#STORE_VECTOR#_", ">=1"}, failOn={}, applyIfAnd={}, applyIfOr={}, applyIfNot={})"
     > Phase "PrintIdeal":
       - counts: Graph contains wrong number of nodes:
         * Constraint 1: "(\\d+(\\s){2}(LoadVector.*)+(\\s){2}===.*)"
           - Failed comparison: [found] 0 >= 1 [given]
           - No nodes matched!
         * Constraint 2: "(\\d+(\\s){2}(StoreVector.*)+(\\s){2}===.*)"
           - Failed comparison: [found] 0 >= 1 [given]
           - No nodes matched!

>>> Check stdout for compilation output of the failed methods


  #############################################################
   - To only run the failed tests use -DTest, -DExclude,
     and/or -DScenarios.
   - To also get the standard output of the test VM run with
     -DReportStdout=true or for even more fine-grained logging
     use -DVerbose=true.
  #############################################################


compiler.lib.ir_framework.driver.irmatching.IRViolationException: There were one or multiple IR rule failures. Please check stderr for more information.
	at compiler.lib.ir_framework.driver.irmatching.IRMatcher.reportFailures(IRMatcher.java:61)
	at compiler.lib.ir_framework.driver.irmatching.IRMatcher.match(IRMatcher.java:49)
	at compiler.lib.ir_framework.TestFramework.runTestVM(TestFramework.java:754)
	at compiler.lib.ir_framework.TestFramework.start(TestFramework.java:719)
	at compiler.lib.ir_framework.TestFramework.start(TestFramework.java:339)
	at compiler.lib.ir_framework.TestFramework.runWithFlags(TestFramework.java:245)
	at compiler.c2.irTests.TestVectorizationMultiInvar.main(TestVectorizationMultiInvar.java:46)
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
	at java.base/java.lang.reflect.Method.invoke(Method.java:578)
	at com.sun.javatest.regtest.agent.MainActionHelper$AgentVMRunnable.run(MainActionHelper.java:312)
	at java.base/java.lang.Thread.run(Thread.java:1630)

JavaTest Message: Test threw exception: compiler.lib.ir_framework.driver.irmatching.IRViolationException
JavaTest Message: shutting down test

result: Failed. Execution failed: `main' threw exception: compiler.lib.ir_framework.driver.irmatching.IRViolationException: There were one or multiple IR rule failures. Please check stderr for more information.
Comments
Changeset: 8ecb5dfa Author: Roland Westrelin <roland@openjdk.org> Date: 2023-04-18 08:54:55 +0000 URL: https://git.openjdk.org/jdk/commit/8ecb5dfa34ebd2ef7717994522fbb4bd7a14e0c9
18-04-2023

A pull request was submitted for review. URL: https://git.openjdk.org/jdk/pull/13492 Date: 2023-04-17 11:26:47 +0000
17-04-2023

ILW = Test fails due to missing C2 optimization (probably test bug), single test at tier2, no workaround = MMH = P3
11-04-2023

[~roland] - The test that you added recently via: JDK-8300257 C2: vectorization fails on some simple Memory Segment loops: is failing in Mach5 Tier2. So far we have failures in 3 Tier2 build-IDs in a row: jdk-21+18-144[4-6]-tier2. The latest build-ID has two failures (so far) so there is something of an intermittent component to the these failures. jdk-21+18-1444-tier2: -XX:UseAVX=0 -XX:UseSSE=3 jdk-21+18-1445-tier2: -XX:UseAVX=0 -XX:UseSSE=2 jdk-21+18-1446-tier2: -XX:UseAVX=0 -XX:UseSSE=3 jdk-21+18-1446-tier2: -XX:UseAVX=0 -XX:UseSSE=2
09-04-2023