; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5 ; RUN: llc -mtriple=arm-unknown-linux-eabi < %s | FileCheck -check-prefix=LINUX %s ; RUN: llc -mtriple=arm-unknown-linux-gnueabi < %s | FileCheck -check-prefix=LINUX %s ; RUN: llc -mtriple=arm-unknown-openbsd < %s | FileCheck -check-prefix=OPENBSD %s define void @func() sspreq nounwind { ; LINUX-LABEL: func: ; LINUX: @ %bb.0: ; LINUX-NEXT: .save {r11, lr} ; LINUX-NEXT: push {r11, lr} ; LINUX-NEXT: .pad #8 ; LINUX-NEXT: sub sp, sp, #8 ; LINUX-NEXT: ldr r0, .LCPI0_0 ; LINUX-NEXT: ldr r0, [r0] ; LINUX-NEXT: str r0, [sp, #4] ; LINUX-NEXT: mov r0, sp ; LINUX-NEXT: bl capture ; LINUX-NEXT: ldr r0, [sp, #4] ; LINUX-NEXT: ldr r1, .LCPI0_0 ; LINUX-NEXT: ldr r1, [r1] ; LINUX-NEXT: cmp r1, r0 ; LINUX-NEXT: addeq sp, sp, #8 ; LINUX-NEXT: popeq {r11, lr} ; LINUX-NEXT: moveq pc, lr ; LINUX-NEXT: .LBB0_1: ; LINUX-NEXT: bl __stack_chk_fail ; LINUX-NEXT: .p2align 2 ; LINUX-NEXT: @ %bb.2: ; LINUX-NEXT: .LCPI0_0: ; LINUX-NEXT: .long __stack_chk_guard ; ; OPENBSD-LABEL: func: ; OPENBSD: @ %bb.0: ; OPENBSD-NEXT: push {r4, lr} ; OPENBSD-NEXT: sub sp, sp, #8 ; OPENBSD-NEXT: ldr r4, .LCPI0_0 ; OPENBSD-NEXT: ldr r0, [r4] ; OPENBSD-NEXT: ldr r0, .LCPI0_2 ; OPENBSD-NEXT: ldr r0, [r0] ; OPENBSD-NEXT: str r0, [sp, #4] ; OPENBSD-NEXT: mov r0, sp ; OPENBSD-NEXT: bl capture ; OPENBSD-NEXT: ldr r0, [r4] ; OPENBSD-NEXT: ldr r1, [sp, #4] ; OPENBSD-NEXT: cmp r0, r1 ; OPENBSD-NEXT: addeq sp, sp, #8 ; OPENBSD-NEXT: popeq {r4, lr} ; OPENBSD-NEXT: moveq pc, lr ; OPENBSD-NEXT: .LBB0_1: @ %CallStackCheckFailBlk ; OPENBSD-NEXT: ldr r0, .LCPI0_1 ; OPENBSD-NEXT: bl __stack_smash_handler ; OPENBSD-NEXT: .p2align 2 ; OPENBSD-NEXT: @ %bb.2: ; OPENBSD-NEXT: .LCPI0_0: ; OPENBSD-NEXT: .long __guard_local ; OPENBSD-NEXT: .LCPI0_1: ; OPENBSD-NEXT: .long .LSSH ; OPENBSD-NEXT: .LCPI0_2: ; OPENBSD-NEXT: .long __guard_local %alloca = alloca i32, align 4 call void @capture(ptr %alloca) ret void } declare void @capture(ptr) ;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line: ; EABI: {{.*}} ; GNUEABI: {{.*}}