JDK-8324751 : C2 SuperWord: Aliasing Analysis runtime check
  • Type: Enhancement
  • Component: hotspot
  • Sub-Component: compiler
  • Affected Version: 23
  • Priority: P4
  • Status: In Progress
  • Resolution: Unresolved
  • Submitted: 2024-01-26
  • Updated: 2025-05-13
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.
Other
tbdUnresolved
Related Reports
Blocks :  
Blocks :  
Blocks :  
Blocks :  
Relates :  
Relates :  
Description
If we can prove (statically or with a runtime-check) that two arrays are different, then this removes edges from the dependency graph, and may allow vectorization that would otherwise not be possible.

As discussed in JDK-8323582 / https://github.com/openjdk/jdk/pull/22016#issuecomment-2680894298, we should write some benchmarks to prove that we need the slow and fast loop, and so that the complexity of the slow_loop is really justified.

Also: add a Flag to disable the predicate for Auto Vectorization.
Comments
Draft: https://github.com/openjdk/jdk/pull/24278
27-03-2025

Blocked by VPointer refactoring, and possibly also by multiversioning-fix for JDK-8323582.
07-01-2025

This is even more important for MemorySegment, where we only have a long as the memory address, and segments could overlap. So we need a general way to check aliasing.
21-03-2024