|
| 1 | +; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5 |
| 2 | +; RUN: llc < %s -mtriple=aarch64 | FileCheck %s |
| 3 | + |
| 4 | +; Crash reproducer for: https://github.com/llvm/llvm-project/issues/142314 |
| 5 | + |
| 6 | +define <2 x ptr addrspace(1)> @widget() nounwind gc "statepoint-example" { |
| 7 | +; CHECK-LABEL: widget: |
| 8 | +; CHECK: // %bb.0: // %bb |
| 9 | +; CHECK-NEXT: sub sp, sp, #32 |
| 10 | +; CHECK-NEXT: movi v0.2d, #0000000000000000 |
| 11 | +; CHECK-NEXT: mov x0, xzr |
| 12 | +; CHECK-NEXT: mov x1, xzr |
| 13 | +; CHECK-NEXT: str x30, [sp, #16] // 8-byte Folded Spill |
| 14 | +; CHECK-NEXT: str q0, [sp] |
| 15 | +; CHECK-NEXT: movi d0, #0000000000000000 |
| 16 | +; CHECK-NEXT: blr xzr |
| 17 | +; CHECK-NEXT: .Ltmp0: |
| 18 | +; CHECK-NEXT: movi v0.2d, #0000000000000000 |
| 19 | +; CHECK-NEXT: mov x8, sp |
| 20 | +; CHECK-NEXT: ldr x30, [sp, #16] // 8-byte Folded Reload |
| 21 | +; CHECK-NEXT: orr x8, x8, #0x8 |
| 22 | +; CHECK-NEXT: ld1 { v0.d }[1], [x8] |
| 23 | +; CHECK-NEXT: add sp, sp, #32 |
| 24 | +; CHECK-NEXT: ret |
| 25 | +bb: |
| 26 | + %call31 = call token (i64, i32, ptr, i32, i32, ...) @llvm.experimental.gc.statepoint.p0(i64 0, i32 0, ptr elementtype(i32 (ptr addrspace(1), ptr addrspace(1), double)) null, i32 3, i32 0, ptr addrspace(1) null, ptr addrspace(1) null, double 0.000000e+00, i32 0, i32 0) [ "gc-live"(ptr addrspace(1) null, <2 x ptr addrspace(1)> zeroinitializer, ptr addrspace(1) null) ] |
| 27 | + %call4 = call coldcc <2 x ptr addrspace(1)> @llvm.experimental.gc.relocate.v2p1(token %call31, i32 0, i32 1) ; (null, zeroinitializer) |
| 28 | + %shufflevector = shufflevector <2 x ptr addrspace(1)> zeroinitializer, <2 x ptr addrspace(1)> %call4, <2 x i32> <i32 0, i32 3> |
| 29 | + ret <2 x ptr addrspace(1)> %shufflevector |
| 30 | +} |
| 31 | + |
| 32 | +declare token @llvm.experimental.gc.statepoint.p0(i64 immarg, i32 immarg, ptr, i32 immarg, i32 immarg, ...) |
| 33 | +declare <2 x ptr addrspace(1)> @llvm.experimental.gc.relocate.v2p1(token, i32 immarg, i32 immarg) |
0 commit comments