82 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 52; RUN: llc -mtriple=i386--linux < %s | FileCheck -check-prefix=LINUX32 %s3; RUN: llc -mtriple=x86_64--linux < %s | FileCheck -check-prefix=LINUX64 %s4; RUN: llc -mtriple=i386--openbsd < %s | FileCheck -check-prefix=OPENBSD32 %s5; RUN: llc -mtriple=x86_64--openbsd < %s | FileCheck -check-prefix=OPENBSD64 %s6 7define void @func() sspreq nounwind {8; LINUX32-LABEL: func:9; LINUX32: # %bb.0:10; LINUX32-NEXT: subl $12, %esp11; LINUX32-NEXT: movl %gs:20, %eax12; LINUX32-NEXT: movl %eax, {{[0-9]+}}(%esp)13; LINUX32-NEXT: leal {{[0-9]+}}(%esp), %eax14; LINUX32-NEXT: movl %eax, (%esp)15; LINUX32-NEXT: calll capture@PLT16; LINUX32-NEXT: movl %gs:20, %eax17; LINUX32-NEXT: cmpl {{[0-9]+}}(%esp), %eax18; LINUX32-NEXT: jne .LBB0_219; LINUX32-NEXT: # %bb.1: # %SP_return20; LINUX32-NEXT: addl $12, %esp21; LINUX32-NEXT: retl22; LINUX32-NEXT: .LBB0_2: # %CallStackCheckFailBlk23; LINUX32-NEXT: calll __stack_chk_fail@PLT24;25; LINUX64-LABEL: func:26; LINUX64: # %bb.0:27; LINUX64-NEXT: subq $24, %rsp28; LINUX64-NEXT: movq %fs:40, %rax29; LINUX64-NEXT: movq %rax, {{[0-9]+}}(%rsp)30; LINUX64-NEXT: leaq {{[0-9]+}}(%rsp), %rdi31; LINUX64-NEXT: callq capture@PLT32; LINUX64-NEXT: movq %fs:40, %rax33; LINUX64-NEXT: cmpq {{[0-9]+}}(%rsp), %rax34; LINUX64-NEXT: jne .LBB0_235; LINUX64-NEXT: # %bb.1: # %SP_return36; LINUX64-NEXT: addq $24, %rsp37; LINUX64-NEXT: retq38; LINUX64-NEXT: .LBB0_2: # %CallStackCheckFailBlk39; LINUX64-NEXT: callq __stack_chk_fail@PLT40;41; OPENBSD32-LABEL: func:42; OPENBSD32: # %bb.0:43; OPENBSD32-NEXT: subl $8, %esp44; OPENBSD32-NEXT: movl __guard_local, %eax45; OPENBSD32-NEXT: movl %eax, {{[0-9]+}}(%esp)46; OPENBSD32-NEXT: movl %esp, %eax47; OPENBSD32-NEXT: pushl %eax48; OPENBSD32-NEXT: calll capture@PLT49; OPENBSD32-NEXT: addl $4, %esp50; OPENBSD32-NEXT: movl __guard_local, %eax51; OPENBSD32-NEXT: cmpl {{[0-9]+}}(%esp), %eax52; OPENBSD32-NEXT: jne .LBB0_253; OPENBSD32-NEXT: # %bb.1: # %SP_return54; OPENBSD32-NEXT: addl $8, %esp55; OPENBSD32-NEXT: retl56; OPENBSD32-NEXT: .LBB0_2: # %CallStackCheckFailBlk57; OPENBSD32-NEXT: pushl $.LSSH58; OPENBSD32-NEXT: calll __stack_smash_handler@PLT59;60; OPENBSD64-LABEL: func:61; OPENBSD64: # %bb.0:62; OPENBSD64-NEXT: subq $24, %rsp63; OPENBSD64-NEXT: movq __guard_local(%rip), %rax64; OPENBSD64-NEXT: movq %rax, {{[0-9]+}}(%rsp)65; OPENBSD64-NEXT: leaq {{[0-9]+}}(%rsp), %rdi66; OPENBSD64-NEXT: callq capture@PLT67; OPENBSD64-NEXT: movq __guard_local(%rip), %rax68; OPENBSD64-NEXT: cmpq {{[0-9]+}}(%rsp), %rax69; OPENBSD64-NEXT: jne .LBB0_270; OPENBSD64-NEXT: # %bb.1: # %SP_return71; OPENBSD64-NEXT: addq $24, %rsp72; OPENBSD64-NEXT: retq73; OPENBSD64-NEXT: .LBB0_2: # %CallStackCheckFailBlk74; OPENBSD64-NEXT: movl $.LSSH, %edi75; OPENBSD64-NEXT: callq __stack_smash_handler@PLT76 %alloca = alloca i32, align 477 call void @capture(ptr %alloca)78 ret void79}80 81declare void @capture(ptr)82