RFR: 8347515: C2: assert(!success || (C->macro_count() == (old_macro_count - 1))) failed: elimination must have deleted one node from macro list [v2]

Saranya Natarajan duke at openjdk.org
Fri May 2 07:54:31 UTC 2025


> Issue: The assertion failure , `assert(!success || (C->macro_count() == (old_macro_count - 1))) failed: elimination must have deleted one node from macro list`, occurs when [loop striping mining  ](https://bugs.openjdk.org/browse/JDK-8186027)may create a [MaxL](https://bugs.openjdk.org/browse/JDK-8324655)  after macro expansion.
> 
> Analysis : Before the macro nodes are expanded in` expand_macro_nodes`, there is a process where nodes from the macro list are eliminated. This also includes elimination of  any `OuterStripMinedLoop` node in the macro list. The bug occurs due to the refining of the strip mined loop in `adjust_strip_mined_loop` function just before it is eliminated. In this case, a` MaxL` node is added to the macro list in `adjust_strip_mined_loop`. 
> 
> Fix: The fix involves performing the refining of the strip mined loop before elimination process. More specifically, moving the `adjust_strip_mined_loop` function outside the elimination loop.
> 
> Improvement:  The process of eliminating macro nodes by calling `eliminate_macro_nodes` and performing additional Opaque and LoopLimit nodes elimination in ` expand_macro_nodes` is unintuitive as suggested in [JDK-8325478 ](https://bugs.openjdk.org/browse/JDK-8325478) and the current fix should be moved along with the other elimination code.

Saranya Natarajan has updated the pull request incrementally with one additional commit since the last revision:

  added the test to JTREG

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

Changes:
  - all: https://git.openjdk.org/jdk/pull/24890/files
  - new: https://git.openjdk.org/jdk/pull/24890/files/5c24df77..8d045cb1

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

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

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


More information about the hotspot-compiler-dev mailing list