RFR: 8276105: C2: Conv(D|F)2(I|L)Nodes::Ideal should handle rounding correctly [v2]

Aleksey Shipilev shade at openjdk.java.net
Mon Nov 1 15:43:44 UTC 2021


> Happens now in master:
> 
> 
> $ CONF=linux-x86-server-fastdebug make run-test TEST=compiler/loopopts/superword/CoLocatePack.java TEST_VM_OPTS="-XX:UseAVX=0 -XX:UseSSE=0"
> ...
> 
> CompileCommand: compileonly compiler/loopopts/superword/CoLocatePack.test bool compileonly = true
>  191 ConvF2L === _ 714 [[ 193 ]] !jvms: CoLocatePack::test @ bci:30 (line 70)
> # To suppress the following error report, specify this argument
> # after -XX: or in .hotspotrc: SuppressErrorAt=/phaseX.cpp:1128
> #
> # A fatal error has been detected by the Java Runtime Environment:
> #
> # Internal Error (/home/shade/trunks/jdk/src/hotspot/share/opto/phaseX.cpp:1128), pid=1717516, tid=1717532
> # fatal error: modified node was not processed by IGVN.transform_old()
> 
> 
> After JDK-8266950 (always `strictfp`), the paths in `Conv(D|F)2(I|L)Nodes::Ideal`-s start to be taken more frequently to round float/double inputs when low SSE is enabled. On those paths, we call `set_req` to rewire current node, but we still return `NULL` from `::Ideal`. I believe that is incorrect, as per `node.cpp` explanation: `NULL` indicates no graph change was done, and `this` should be returned when modification happened. So GVN predictably barfs.
> 
> Additional testing:
>  - [x] Linux x86_32 `tier1` with `-XX:UseAVX=0 -XX:UseSSE=0` (now pass)
>  - [x] Linux x86_32 `tier1` default (still pass)
>  - [x] Linux x86_64 `tier1` default

Aleksey Shipilev has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains three additional commits since the last revision:

 - Whitespace
 - Merge branch 'master' into JDK-8276105-c2-igvn
 - Fix

-------------

Changes:
  - all: https://git.openjdk.java.net/jdk/pull/6176/files
  - new: https://git.openjdk.java.net/jdk/pull/6176/files/fb3c6a16..a357fcb1

Webrevs:
 - full: https://webrevs.openjdk.java.net/?repo=jdk&pr=6176&range=01
 - incr: https://webrevs.openjdk.java.net/?repo=jdk&pr=6176&range=00-01

  Stats: 14437 lines in 413 files changed: 11215 ins; 1512 del; 1710 mod
  Patch: https://git.openjdk.java.net/jdk/pull/6176.diff
  Fetch: git fetch https://git.openjdk.java.net/jdk pull/6176/head:pull/6176

PR: https://git.openjdk.java.net/jdk/pull/6176


More information about the hotspot-compiler-dev mailing list