96 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2 3;; Test target-specific stack cookie location.4;5; RUN: llc -mtriple=riscv64-linux < %s | FileCheck --check-prefix=LINUX-RISCV64 %s6; RUN: llc -mtriple=riscv64-fuchsia < %s | FileCheck --check-prefix=FUCHSIA-RISCV64 %s7; RUN: llc -mtriple=riscv64-android < %s | FileCheck --check-prefix=ANDROID-RISCV64 %s8; RUN: llc -mtriple=riscv64-openbsd < %s | FileCheck --check-prefix=OPENBSD-RISCV64 %s9 10define void @func() sspreq nounwind {11; LINUX-RISCV64-LABEL: func:12; LINUX-RISCV64: # %bb.0:13; LINUX-RISCV64-NEXT: addi sp, sp, -3214; LINUX-RISCV64-NEXT: sd ra, 24(sp) # 8-byte Folded Spill15; LINUX-RISCV64-NEXT: sd s0, 16(sp) # 8-byte Folded Spill16; LINUX-RISCV64-NEXT: lui s0, %hi(__stack_chk_guard)17; LINUX-RISCV64-NEXT: ld a0, %lo(__stack_chk_guard)(s0)18; LINUX-RISCV64-NEXT: sd a0, 8(sp)19; LINUX-RISCV64-NEXT: addi a0, sp, 420; LINUX-RISCV64-NEXT: call capture21; LINUX-RISCV64-NEXT: ld a0, %lo(__stack_chk_guard)(s0)22; LINUX-RISCV64-NEXT: ld a1, 8(sp)23; LINUX-RISCV64-NEXT: bne a0, a1, .LBB0_224; LINUX-RISCV64-NEXT: # %bb.1:25; LINUX-RISCV64-NEXT: ld ra, 24(sp) # 8-byte Folded Reload26; LINUX-RISCV64-NEXT: ld s0, 16(sp) # 8-byte Folded Reload27; LINUX-RISCV64-NEXT: addi sp, sp, 3228; LINUX-RISCV64-NEXT: ret29; LINUX-RISCV64-NEXT: .LBB0_2:30; LINUX-RISCV64-NEXT: call __stack_chk_fail31;32; FUCHSIA-RISCV64-LABEL: func:33; FUCHSIA-RISCV64: # %bb.0:34; FUCHSIA-RISCV64-NEXT: addi sp, sp, -3235; FUCHSIA-RISCV64-NEXT: sd ra, 24(sp) # 8-byte Folded Spill36; FUCHSIA-RISCV64-NEXT: ld a0, -16(tp)37; FUCHSIA-RISCV64-NEXT: sd a0, 16(sp)38; FUCHSIA-RISCV64-NEXT: addi a0, sp, 1239; FUCHSIA-RISCV64-NEXT: call capture40; FUCHSIA-RISCV64-NEXT: ld a0, -16(tp)41; FUCHSIA-RISCV64-NEXT: ld a1, 16(sp)42; FUCHSIA-RISCV64-NEXT: bne a0, a1, .LBB0_243; FUCHSIA-RISCV64-NEXT: # %bb.1: # %SP_return44; FUCHSIA-RISCV64-NEXT: ld ra, 24(sp) # 8-byte Folded Reload45; FUCHSIA-RISCV64-NEXT: addi sp, sp, 3246; FUCHSIA-RISCV64-NEXT: ret47; FUCHSIA-RISCV64-NEXT: .LBB0_2: # %CallStackCheckFailBlk48; FUCHSIA-RISCV64-NEXT: call __stack_chk_fail49;50; ANDROID-RISCV64-LABEL: func:51; ANDROID-RISCV64: # %bb.0:52; ANDROID-RISCV64-NEXT: addi sp, sp, -3253; ANDROID-RISCV64-NEXT: sd ra, 24(sp) # 8-byte Folded Spill54; ANDROID-RISCV64-NEXT: ld a0, -24(tp)55; ANDROID-RISCV64-NEXT: sd a0, 16(sp)56; ANDROID-RISCV64-NEXT: addi a0, sp, 1257; ANDROID-RISCV64-NEXT: call capture58; ANDROID-RISCV64-NEXT: ld a0, -24(tp)59; ANDROID-RISCV64-NEXT: ld a1, 16(sp)60; ANDROID-RISCV64-NEXT: bne a0, a1, .LBB0_261; ANDROID-RISCV64-NEXT: # %bb.1: # %SP_return62; ANDROID-RISCV64-NEXT: ld ra, 24(sp) # 8-byte Folded Reload63; ANDROID-RISCV64-NEXT: addi sp, sp, 3264; ANDROID-RISCV64-NEXT: ret65; ANDROID-RISCV64-NEXT: .LBB0_2: # %CallStackCheckFailBlk66; ANDROID-RISCV64-NEXT: call __stack_chk_fail67;68; OPENBSD-RISCV64-LABEL: func:69; OPENBSD-RISCV64: # %bb.0:70; OPENBSD-RISCV64-NEXT: addi sp, sp, -3271; OPENBSD-RISCV64-NEXT: sd ra, 24(sp) # 8-byte Folded Spill72; OPENBSD-RISCV64-NEXT: sd s0, 16(sp) # 8-byte Folded Spill73; OPENBSD-RISCV64-NEXT: lui s0, %hi(__guard_local)74; OPENBSD-RISCV64-NEXT: ld a0, %lo(__guard_local)(s0)75; OPENBSD-RISCV64-NEXT: sd a0, 8(sp)76; OPENBSD-RISCV64-NEXT: addi a0, sp, 477; OPENBSD-RISCV64-NEXT: call capture78; OPENBSD-RISCV64-NEXT: ld a0, %lo(__guard_local)(s0)79; OPENBSD-RISCV64-NEXT: ld a1, 8(sp)80; OPENBSD-RISCV64-NEXT: bne a0, a1, .LBB0_281; OPENBSD-RISCV64-NEXT: # %bb.1: # %SP_return82; OPENBSD-RISCV64-NEXT: ld ra, 24(sp) # 8-byte Folded Reload83; OPENBSD-RISCV64-NEXT: ld s0, 16(sp) # 8-byte Folded Reload84; OPENBSD-RISCV64-NEXT: addi sp, sp, 3285; OPENBSD-RISCV64-NEXT: ret86; OPENBSD-RISCV64-NEXT: .LBB0_2: # %CallStackCheckFailBlk87; OPENBSD-RISCV64-NEXT: lui a0, %hi(.LSSH)88; OPENBSD-RISCV64-NEXT: addi a0, a0, %lo(.LSSH)89; OPENBSD-RISCV64-NEXT: call __stack_smash_handler90 %1 = alloca i32, align 491 call void @capture(ptr %1)92 ret void93}94 95declare void @capture(ptr)96