xref: /llvm-project/llvm/test/CodeGen/RISCV/stack-protector-target.ll (revision d95f7c9cabf493ffdc615df47a420a80d4be8e5c)
134b21e81SRoland McGrath; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
234b21e81SRoland McGrath
334b21e81SRoland McGrath;; Test target-specific stack cookie location.
434b21e81SRoland McGrath;
560535229SPaul Kirth; RUN: llc -mtriple=riscv64-linux < %s | FileCheck --check-prefix=LINUX-RISCV64 %s
634b21e81SRoland McGrath; RUN: llc -mtriple=riscv64-fuchsia < %s | FileCheck --check-prefix=FUCHSIA-RISCV64 %s
760535229SPaul Kirth; RUN: llc -mtriple=riscv64-android < %s | FileCheck --check-prefix=ANDROID-RISCV64 %s
834b21e81SRoland McGrath
92406f3beSRoland McGrathdefine void @func() sspreq nounwind {
1060535229SPaul Kirth; LINUX-RISCV64-LABEL: func:
1160535229SPaul Kirth; LINUX-RISCV64:       # %bb.0:
1260535229SPaul Kirth; LINUX-RISCV64-NEXT:    addi sp, sp, -32
1360535229SPaul Kirth; LINUX-RISCV64-NEXT:    sd ra, 24(sp) # 8-byte Folded Spill
1460535229SPaul Kirth; LINUX-RISCV64-NEXT:    sd s0, 16(sp) # 8-byte Folded Spill
1560535229SPaul Kirth; LINUX-RISCV64-NEXT:    lui s0, %hi(__stack_chk_guard)
1660535229SPaul Kirth; LINUX-RISCV64-NEXT:    ld a0, %lo(__stack_chk_guard)(s0)
1760535229SPaul Kirth; LINUX-RISCV64-NEXT:    sd a0, 8(sp)
1860535229SPaul Kirth; LINUX-RISCV64-NEXT:    addi a0, sp, 4
1960535229SPaul Kirth; LINUX-RISCV64-NEXT:    call capture
2060535229SPaul Kirth; LINUX-RISCV64-NEXT:    ld a0, %lo(__stack_chk_guard)(s0)
2160535229SPaul Kirth; LINUX-RISCV64-NEXT:    ld a1, 8(sp)
2260535229SPaul Kirth; LINUX-RISCV64-NEXT:    bne a0, a1, .LBB0_2
2360535229SPaul Kirth; LINUX-RISCV64-NEXT:  # %bb.1:
2460535229SPaul Kirth; LINUX-RISCV64-NEXT:    ld ra, 24(sp) # 8-byte Folded Reload
2560535229SPaul Kirth; LINUX-RISCV64-NEXT:    ld s0, 16(sp) # 8-byte Folded Reload
2660535229SPaul Kirth; LINUX-RISCV64-NEXT:    addi sp, sp, 32
2760535229SPaul Kirth; LINUX-RISCV64-NEXT:    ret
2860535229SPaul Kirth; LINUX-RISCV64-NEXT:  .LBB0_2:
2960535229SPaul Kirth; LINUX-RISCV64-NEXT:    call __stack_chk_fail
3060535229SPaul Kirth;
3134b21e81SRoland McGrath; FUCHSIA-RISCV64-LABEL: func:
3234b21e81SRoland McGrath; FUCHSIA-RISCV64:       # %bb.0:
3334b21e81SRoland McGrath; FUCHSIA-RISCV64-NEXT:    addi sp, sp, -32
3434b21e81SRoland McGrath; FUCHSIA-RISCV64-NEXT:    sd ra, 24(sp) # 8-byte Folded Spill
3534b21e81SRoland McGrath; FUCHSIA-RISCV64-NEXT:    ld a0, -16(tp)
3634b21e81SRoland McGrath; FUCHSIA-RISCV64-NEXT:    sd a0, 16(sp)
3734b21e81SRoland McGrath; FUCHSIA-RISCV64-NEXT:    addi a0, sp, 12
38eabaee0cSFangrui Song; FUCHSIA-RISCV64-NEXT:    call capture
3934b21e81SRoland McGrath; FUCHSIA-RISCV64-NEXT:    ld a0, -16(tp)
4034b21e81SRoland McGrath; FUCHSIA-RISCV64-NEXT:    ld a1, 16(sp)
4134b21e81SRoland McGrath; FUCHSIA-RISCV64-NEXT:    bne a0, a1, .LBB0_2
4234b21e81SRoland McGrath; FUCHSIA-RISCV64-NEXT:  # %bb.1: # %SP_return
4334b21e81SRoland McGrath; FUCHSIA-RISCV64-NEXT:    ld ra, 24(sp) # 8-byte Folded Reload
4434b21e81SRoland McGrath; FUCHSIA-RISCV64-NEXT:    addi sp, sp, 32
4534b21e81SRoland McGrath; FUCHSIA-RISCV64-NEXT:    ret
4634b21e81SRoland McGrath; FUCHSIA-RISCV64-NEXT:  .LBB0_2: # %CallStackCheckFailBlk
47eabaee0cSFangrui Song; FUCHSIA-RISCV64-NEXT:    call __stack_chk_fail
4860535229SPaul Kirth;
4960535229SPaul Kirth; ANDROID-RISCV64-LABEL: func:
5060535229SPaul Kirth; ANDROID-RISCV64:       # %bb.0:
5160535229SPaul Kirth; ANDROID-RISCV64-NEXT:    addi sp, sp, -32
5260535229SPaul Kirth; ANDROID-RISCV64-NEXT:    sd ra, 24(sp) # 8-byte Folded Spill
53*d95f7c9cSPaul Kirth; ANDROID-RISCV64-NEXT:    ld a0, -24(tp)
54*d95f7c9cSPaul Kirth; ANDROID-RISCV64-NEXT:    sd a0, 16(sp)
55*d95f7c9cSPaul Kirth; ANDROID-RISCV64-NEXT:    addi a0, sp, 12
5660535229SPaul Kirth; ANDROID-RISCV64-NEXT:    call capture
57*d95f7c9cSPaul Kirth; ANDROID-RISCV64-NEXT:    ld a0, -24(tp)
58*d95f7c9cSPaul Kirth; ANDROID-RISCV64-NEXT:    ld a1, 16(sp)
5960535229SPaul Kirth; ANDROID-RISCV64-NEXT:    bne a0, a1, .LBB0_2
60*d95f7c9cSPaul Kirth; ANDROID-RISCV64-NEXT:  # %bb.1: # %SP_return
6160535229SPaul Kirth; ANDROID-RISCV64-NEXT:    ld ra, 24(sp) # 8-byte Folded Reload
6260535229SPaul Kirth; ANDROID-RISCV64-NEXT:    addi sp, sp, 32
6360535229SPaul Kirth; ANDROID-RISCV64-NEXT:    ret
64*d95f7c9cSPaul Kirth; ANDROID-RISCV64-NEXT:  .LBB0_2: # %CallStackCheckFailBlk
6560535229SPaul Kirth; ANDROID-RISCV64-NEXT:    call __stack_chk_fail
6634b21e81SRoland McGrath  %1 = alloca i32, align 4
672406f3beSRoland McGrath  call void @capture(ptr %1)
6834b21e81SRoland McGrath  ret void
6934b21e81SRoland McGrath}
7034b21e81SRoland McGrath
7134b21e81SRoland McGrathdeclare void @capture(ptr)
72