xref: /llvm-project/llvm/test/CodeGen/RISCV/stack-protector-target.ll (revision eabaee0c59110d0e11b33a69db54ccda526b35fd)
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2
3;; Test target-specific stack cookie location.
4;
5; RUN: llc -mtriple=riscv64-fuchsia < %s | FileCheck --check-prefix=FUCHSIA-RISCV64 %s
6
7define void @func() sspreq nounwind {
8; FUCHSIA-RISCV64-LABEL: func:
9; FUCHSIA-RISCV64:       # %bb.0:
10; FUCHSIA-RISCV64-NEXT:    addi sp, sp, -32
11; FUCHSIA-RISCV64-NEXT:    sd ra, 24(sp) # 8-byte Folded Spill
12; FUCHSIA-RISCV64-NEXT:    ld a0, -16(tp)
13; FUCHSIA-RISCV64-NEXT:    sd a0, 16(sp)
14; FUCHSIA-RISCV64-NEXT:    addi a0, sp, 12
15; FUCHSIA-RISCV64-NEXT:    call capture
16; FUCHSIA-RISCV64-NEXT:    ld a0, -16(tp)
17; FUCHSIA-RISCV64-NEXT:    ld a1, 16(sp)
18; FUCHSIA-RISCV64-NEXT:    bne a0, a1, .LBB0_2
19; FUCHSIA-RISCV64-NEXT:  # %bb.1: # %SP_return
20; FUCHSIA-RISCV64-NEXT:    ld ra, 24(sp) # 8-byte Folded Reload
21; FUCHSIA-RISCV64-NEXT:    addi sp, sp, 32
22; FUCHSIA-RISCV64-NEXT:    ret
23; FUCHSIA-RISCV64-NEXT:  .LBB0_2: # %CallStackCheckFailBlk
24; FUCHSIA-RISCV64-NEXT:    call __stack_chk_fail
25  %1 = alloca i32, align 4
26  call void @capture(ptr %1)
27  ret void
28}
29
30declare void @capture(ptr)
31