JDK-8369646 : Detection of redundant conversion patterns in add_users_of_use_to_worklist is too restrictive
  • Type: Bug
  • Component: hotspot
  • Sub-Component: compiler
  • Affected Version: 26
  • Priority: P4
  • Status: Open
  • Resolution: Unresolved
  • OS: linux
  • CPU: generic
  • Submitted: 2025-10-13
  • Updated: 2025-10-20
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 26
26Unresolved
Related Reports
Relates :  
Description
Intermittent test crash via assertion failure. Seen in Valhalla, but appears to be in mainline.

Missed Identity optimization:
Old node:
dist dump
---------------------------------------------
   1  384  ConvL2D  === _ 365  [[ 376 369 364 ]]  #double !orig=[368],[357],[348] !jvms: TestEliminateRedundantConversionSequences::testD2L @ bci:26 (line 52)
   0  369  ConvD2L  === _ 384  [[ 358 ]]  #long !orig=[357],[348]
New node:
dist dump
---------------------------------------------
   1  364  Phi  === 338 298 384  [[ 365 ]]  #double !orig=[355],[337],204,[198]
   0  365  ConvD2L  === _ 364  [[ 384 333 ]]  #long !orig=[355],[337],204,[198] !jvms: TestEliminateRedundantConversionSequences::testD2L @ bci:19 (line 51)


#
# A fatal error has been detected by the Java Runtime Environment:
#
#  Internal Error (src/hotspot/share/opto/phaseX.cpp:1105), pid=3159999, tid=3160018
#  assert(!failure) failed: Missed optimization opportunity in PhaseIterGVN
#
# JRE version: Java(TM) SE Runtime Environment (26.0+1) (fastdebug build 26-valhalla+1-80)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (fastdebug 26-valhalla+1-80, mixed mode, sharing, compressed oops, compressed class ptrs, g1 gc, linux-amd64)
# Problematic frame:
# V  [libjvm.so+0x1900739]  PhaseIterGVN::verify_optimize()+0xd19
#
# Core dump will be written. Default location: Core dumps may be processed with "/opt/core.sh %p" (or dumping to core.3159999)
#
# If you would like to submit a bug report, please visit:
#   https://bugreport.java.com/bugreport/crash.jsp
#

---------------  S U M M A R Y ------------

Command Line: -Dtest.vm.opts=-XX:MaxRAMPercentage=4.16667 -Dtest.boot.jdk=jdk-24_linux-x64_bin.tar.gz/jdk-24 -Djava.io.tmpdir=test-support/jtreg_open_test_hotspot_jtreg_tier1_compiler_1/tmp -Dtest.tool.vm.opts=-J-XX:MaxRAMPercentage=4.16667 -J-Dtest.boot.jdk=jdk-24_linux-x64_bin.tar.gz/jdk-24 -J-Djava.io.tmpdir=test-support/jtreg_open_test_hotspot_jtreg_tier1_compiler_1/tmp -Dtest.compiler.opts= -Dtest.java.opts=-XX:+UnlockDiagnosticVMOptions -XX:-TieredCompilation -XX:+StressArrayCopyMacroNode -XX:+StressLCM -XX:+StressGCM -XX:+StressIGVN -XX:+StressCCP -XX:+StressMacroExpansion -XX:+StressMethodHandleLinkerInlining -XX:+StressCompiledExceptionHandlers -XX:VerifyConstraintCasts=1 -XX:+StressLoopPeeling -Dtest.jdk=jdk-26/fastdebug -Dcompile.jdk=jdk-26/fastdebug -Dtest.timeout.factor=1.0 -Dtest.nativepath=hotspot/jtreg/native -Dtest.root=test/hotspot/jtreg -Dtest.name=compiler/c2/TestEliminateRedundantConversionSequences.java -Dtest.verbose=Verbose[p=BRIEF,f=FULL,e=FULL,t=true,m=false] -Dtest.file=test/hotspot/jtreg/compiler/c2/TestEliminateRedundantConversionSequences.java -Dtest.src=test/hotspot/jtreg/compiler/c2 -Dtest.src.path=test/hotspot/jtreg/compiler/c2 -Dtest.classes=test-support/jtreg_open_test_hotspot_jtreg_tier1_compiler_1/classes/4/compiler/c2/TestEliminateRedundantConversionSequences.d -Dtest.class.path=test-support/jtreg_open_test_hotspot_jtreg_tier1_compiler_1/classes/4/compiler/c2/TestEliminateRedundantConversionSequences.d -Dtest.class.path.prefix=test-support/jtreg_open_test_hotspot_jtreg_tier1_compiler_1/classes/4/compiler/c2/TestEliminateRedundantConversionSequences.d:test/hotspot/jtreg/compiler/c2 -XX:MaxRAMPercentage=4.16667 -Dtest.boot.jdk=jdk-24_linux-x64_bin.tar.gz/jdk-24 -Djava.io.tmpdir=test-support/jtreg_open_test_hotspot_jtreg_tier1_compiler_1/tmp -XX:+UnlockDiagnosticVMOptions -XX:-TieredCompilation -XX:+StressArrayCopyMacroNode -XX:+StressLCM -XX:+StressGCM -XX:+StressIGVN -XX:+StressCCP -XX:+StressMacroExpansion -XX:+StressMethodHandleLinkerInlining -XX:+StressCompiledExceptionHandlers -XX:VerifyConstraintCasts=1 -XX:+StressLoopPeeling -Djava.library.path=hotspot/jtreg/native -XX:+IgnoreUnrecognizedVMOptions -XX:CompileCommand=compileonly,compiler.c2.TestEliminateRedundantConversionSequences::test* -XX:-TieredCompilation -Xbatch -XX:VerifyIterativeGVN=1110 com.sun.javatest.regtest.agent.MainWrapper test-support/jtreg_open_test_hotspot_jtreg_tier1_compiler_1/compiler/c2/TestEliminateRedundantConversionSequences.d/main.0.jta

Host: , AMD EPYC 7J13 64-Core Processor, 12 cores, 23G, Oracle Linux Server release 9.5
Time: Fri Oct 10 15:23:21 2025 UTC elapsed time: 0.226736 seconds (0d 0h 0m 0s)

---------------  T H R E A D  ---------------

Current thread (0x00007f805c1a9970):  JavaThread "C2 CompilerThread0" daemon [_thread_in_native, id=3160018, stack(0x00007f8042c12000,0x00007f8042d12000) (1024K)]


Current CompileTask:
C2:226   14    b        compiler.c2.TestEliminateRedundantConversionSequences::testD2L (35 bytes)

Stack: [0x00007f8042c12000,0x00007f8042d12000],  sp=0x00007f8042d0ccb0,  free space=1003k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
V  [libjvm.so+0x1900739]  PhaseIterGVN::verify_optimize()+0xd19  (phaseX.cpp:1105)
V  [libjvm.so+0x1900fa8]  PhaseIterGVN::optimize()+0x418  (phaseX.cpp:1069)
V  [libjvm.so+0xbc8c82]  PhaseIdealLoop::optimize(PhaseIterGVN&, LoopOptsMode)+0x672  (loopnode.hpp:1292)
V  [libjvm.so+0xbc299b]  Compile::Optimize()+0x121b  (compile.cpp:2960)
V  [libjvm.so+0xbc570f]  Compile::Compile(ciEnv*, ciMethod*, int, Options, DirectiveSet*)+0x1fcf  (compile.cpp:873)
V  [libjvm.so+0x9cf333]  C2Compiler::compile_method(ciEnv*, ciMethod*, int, bool, DirectiveSet*)+0x483  (c2compiler.cpp:149)
V  [libjvm.so+0xbd4cd8]  CompileBroker::invoke_compiler_on_method(CompileTask*)+0xb48  (compileBroker.cpp:2342)
V  [libjvm.so+0xbd5e60]  CompileBroker::compiler_thread_loop()+0x530  (compileBroker.cpp:1986)
V  [libjvm.so+0x116444b]  JavaThread::thread_main_inner()+0x13b  (javaThread.cpp:776)
V  [libjvm.so+0x1c28f56]  Thread::call_run()+0xb6  (thread.cpp:243)
V  [libjvm.so+0x1860218]  thread_native_entry(Thread*)+0x128  (os_linux.cpp:892)
Comments
A pull request was submitted for review. Branch: master URL: https://git.openjdk.org/jdk/pull/27900 Date: 2025-10-20 14:08:59 +0000
20-10-2025

ILW = Same as JDK-8359603 = P4
13-10-2025

This looks very similar to JDK-8359603 that introduced the test. [~bmaillard], could you please have a look?
13-10-2025