Files
TheRock/compiler/amd-llvm/llvm/test/CodeGen/Hexagon/rdf-liveness-phi-invalidation.ll
derek.holloway 7502bf64a4
CodeQL / Analyze (actions) (push) Canceled after 0s
CodeQL / Analyze (python) (push) Canceled after 0s
pre-commit / pre-commit (push) Canceled after 0s
Multi-Arch CI / setup (push) Canceled after 0s
Publish build_manylinux_x86_64 images / publish_build_manylinux_x86_64 (push) Canceled after 0s
Setup (Multi-Arch) / setup (push) Canceled after 0s
Multi-Arch CI / Linux::${{ fromJSON(needs.setup.outputs.linux_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubi10 image / publish_no_rocm_image_ubi10 (push) Canceled after 0s
Multi-Arch CI / Windows::${{ fromJSON(needs.setup.outputs.windows_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Multi-Arch CI / Manifest Diff (push) Canceled after 0s
TheRock Manifest Diff Report / Generate Manifest Diff Report (push) Canceled after 0s
Multi-Arch CI / CI Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_ocl_rt images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_rocgdb images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Unit Tests / Unit Tests :: ubuntu-24.04 (push) Canceled after 0s
Unit Tests / Unit Tests :: windows-2022 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_media (push) Canceled after 0s
Unit Tests / Unit Tests Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_openmpi (push) Canceled after 0s
Flatten subprojects into a single base monorepo
2026-09-02 16:34:47 -07:00

88 lines
3.2 KiB
LLVM

; RUN: llc -march=hexagon -mcpu=hexagonv68 -mattr=+hvx-length128b -O3 < %s -o /dev/null
;
; Check that RDF liveness computation does not crash due to DenseMap
; iterator/reference invalidation. The function computePhiInfo holds a
; reference to a DenseMap value (RealUseMap[PA.Id]) while the inner loop
; may insert new entries into the same DenseMap, potentially triggering
; a rehash that invalidates the reference.
target datalayout = "e-m:e-p:32:32:32-a:0-n16:32-i64:64:64-i32:32:32-i16:16:16-i1:8:8-f32:32:32-f64:64:64-v32:32:32-v64:64:64-v512:512:512-v1024:1024:1024-v2048:2048:2048"
target triple = "hexagon-unknown-linux-musl"
%struct.lua_TValue = type { %union.Value, i32 }
%union.Value = type { double }
define void @luaV_execute(ptr noundef %L) #0 {
entry:
br label %for.cond
for.body1248.epil:
%j1210.01943.epil = phi i32 [ 0, %sw.bb1205 ], [ 1, %for.body1248.epil ]
%epil.iter = phi i32 [ 0, %sw.bb1205 ], [ %epil.iter.next, %for.body1248.epil ]
%0 = load ptr, ptr %9, align 4
%add.ptr1255.epil = getelementptr inbounds nuw %struct.lua_TValue, ptr %0, i32 %j1210.01943.epil
%add.ptr1257.epil = getelementptr inbounds nuw %struct.lua_TValue, ptr null, i32 %j1210.01943.epil
%1 = load i64, ptr %add.ptr1255.epil, align 8
store i64 %1, ptr %add.ptr1257.epil, align 8
%2 = getelementptr inbounds nuw %struct.lua_TValue, ptr null, i32 %j1210.01943.epil
%tt1261.epil = getelementptr inbounds nuw i8, ptr %2, i32 8
store i32 0, ptr %tt1261.epil, align 8
%inc1267.epil = add nuw nsw i32 0, 1
%epil.iter.next = add i32 %epil.iter, 1
%epil.iter.cmp.not = icmp eq i32 %epil.iter.next, 7
br i1 %epil.iter.cmp.not, label %for.cond, label %for.body1248.epil
for.cond:
%base.0 = phi ptr [ null, %entry ], [ %base.1, %sw.bb560 ], [ null, %if.end14 ], [ null, %sw.bb257 ], [ null, %sw.bb973 ], [ null, %for.body1248.epil ], [ null, %sw.bb309 ], [ null, %sw.bb209 ]
%3 = load i32, ptr null, align 4
br label %if.end14
if.end14:
%base.1 = phi ptr [ %base.0, %for.cond ]
%and18 = and i32 %3, 63
switch i32 %and18, label %for.cond [
i32 37, label %sw.bb1205
i32 32, label %sw.bb973
i32 20, label %sw.bb560
i32 14, label %sw.bb309
i32 13, label %sw.bb257
i32 12, label %sw.bb209
]
sw.bb209:
%4 = load double, ptr null, align 8
%add = fadd double %4, 0.000000e+00
store double %add, ptr %base.1, align 8
br label %for.cond
sw.bb257:
%5 = load double, ptr null, align 8
%sub = fsub double 0.000000e+00, %5
store double %sub, ptr %base.1, align 8
br label %for.cond
sw.bb309:
%6 = load double, ptr null, align 8
%mul = fmul double 0.000000e+00, %6
store double %mul, ptr %base.1, align 8
br label %for.cond
sw.bb560:
%7 = load i32, ptr null, align 4
%conv576 = uitofp i32 %7 to double
store double %conv576, ptr %base.1, align 8
br label %for.cond
sw.bb973:
%8 = load double, ptr null, align 8
%sub1011 = fsub double 0.000000e+00, %8
store double %sub1011, ptr %base.1, align 8
br label %for.cond
sw.bb1205:
%9 = load ptr, ptr null, align 4
br label %for.body1248.epil
}
attributes #0 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="hexagonv68" "target-features"="+v68,-long-calls" }