From b520a94f3489ed6fd43f699e1836743fd4c4f040 Mon Sep 17 00:00:00 2001 From: Quan Anh Mai Date: Thu, 17 Jul 2025 16:40:39 +0700 Subject: [PATCH] Skip dead nodes during VectorAPIExpansion --- .../replacements/vectorapi/VectorAPIExpansionPhase.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/compiler/src/jdk.graal.compiler/src/jdk/graal/compiler/vector/replacements/vectorapi/VectorAPIExpansionPhase.java b/compiler/src/jdk.graal.compiler/src/jdk/graal/compiler/vector/replacements/vectorapi/VectorAPIExpansionPhase.java index 030d59c62c0b..0618dd7aa61c 100644 --- a/compiler/src/jdk.graal.compiler/src/jdk/graal/compiler/vector/replacements/vectorapi/VectorAPIExpansionPhase.java +++ b/compiler/src/jdk.graal.compiler/src/jdk/graal/compiler/vector/replacements/vectorapi/VectorAPIExpansionPhase.java @@ -729,6 +729,11 @@ private static ValueNode visitPhiForExpansion(StructuredGraph graph, NodeMap expanded, VectorArchitecture vectorArch) { for (ValueNode node : component.simdStamps.getKeys()) { + if (!node.isAlive()) { + // As we kill CFGs while replacing each element of the component, it may be the case + // that an element is killed because its control dies, simply skip those elements + continue; + } ValueNode replacement = expanded.get(node); GraalError.guarantee(replacement != null, "node was not expanded: %s", node); graph.getDebug().dump(DebugContext.VERY_DETAILED_LEVEL, graph, "before replacing %s -> %s", node, replacement);