RFR: 8310130: C2: assert(false) failed: scalar_input is neither phi nor a matchin reduction [v3]

Emanuel Peter epeter at openjdk.org
Mon Jun 26 08:51:27 UTC 2023


> Removed a spurious assert before optimization bailout.
> 
> I assumed that the "scalar input" of a Reduction node must always be either a Phi or another Reduction node. But that is incorrect, partial vectorization can lead to a reduction node chain where we have vector reductions and scalar reductions at the same time. In those cases, we cannot move the UnorderedReductions out of the loop, so a optimization bailout is appropriate.
> 
> I assessed the other asserts in `PhaseIdealLoop::move_unordered_reduction_out_of_loop`, and I think they are all justified. However, one assert would have lead to a `continue` in production, which would not break out of the nested loop correctly. I changed it to a `return`, so that would be a bailout from the optimization. This assert should not be triggered because in `SuperWord::mark_reductions` we forbid that a reduction node has any uses inside the loop except for the successor node in the reduction chain.
> 
> I have one regression test delivered by the fuzzer, and one that I constructed myself after understanding the issue.
> Testing up to tier6 and stress testing. **Running, passing except for some IR rules I had to fix, rerunning...**

Emanuel Peter has updated the pull request incrementally with one additional commit since the last revision:

  require 64 bit for test with OR_REDUCTION_V

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

Changes:
  - all: https://git.openjdk.org/jdk/pull/14494/files
  - new: https://git.openjdk.org/jdk/pull/14494/files/53e8913e..056f00af

Webrevs:
 - full: https://webrevs.openjdk.org/?repo=jdk&pr=14494&range=02
 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=14494&range=01-02

  Stats: 1 line in 1 file changed: 1 ins; 0 del; 0 mod
  Patch: https://git.openjdk.org/jdk/pull/14494.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/14494/head:pull/14494

PR: https://git.openjdk.org/jdk/pull/14494


More information about the hotspot-compiler-dev mailing list