Open TemporaryRepos opened 5 months ago
@hzongaro fyi
Playing with the simplyCase
version, I was able to produce the Magic
output by limiting compilation to the Test8004741.test
and Test8004741.run
methods. It looks like the incorrect output occurs when the run
method is compiled with DLT, even at noOpt, but the test
method already must have been compiled at least at warm up to opt index 28, which corresponds to Global Value Propagation.
$ java -Xjit:limit={*Test8004741.*},{*Test8004741.run*}\(optLevel=noopt,lastOptIndex=0\),{*Test8004741.test*}\(optLevel=warm,lastOptIndex=28\) -cp simplyCase compiler.c2.Test8004741
Magic
$ java -Xjit:limit={*Test8004741.*},{*Test8004741.run*}\(optLevel=noopt,lastOptIndex=0\),{*Test8004741.test*}\(optLevel=warm,lastOptIndex=27\) -cp simplyCase compiler.c2.Test8004741
@jmesyou, may I ask you to look at this problem?
Affected versions
We found a test case with execution problems. To facilitate analysis, we simplified the test case and the simplified class file can ben found at attachment.
Linux Ubuntu20.04
Java -version output under Linux
Problem summary
Here we have provided two test cases, in the folder bugCase, executing the test case with OpenJ9 will go to an incorrect branch and output Magic, but Hotspot will end normally. But if we remove a portion of extraneous code from test(), it causes OpenJ9 to block. We have provided two folders in the attachment, where bugCase is the test case that can output Magic and simplyCase is the test case where blocking occurs.
Steps to Reproduce
Expected Result
Actual Result
Attachment
202403131459.zip