142 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 52; RUN: llc -mtriple=sparc-unknown-linux < %s | FileCheck -check-prefix=LINUX32 %s3; RUN: llc -mtriple=sparc64-unknown-linux < %s | FileCheck -check-prefix=LINUX64 %s4; RUN: llc -mtriple=sparc-unknown-solaris < %s | FileCheck -check-prefixes=SOLARIS32 %s5; RUN: llc -mtriple=sparc64-unknown-solaris < %s | FileCheck -check-prefixes=SOLARIS64 %s6; RUN: llc -mtriple=sparc-unknown-openbsd < %s | FileCheck -check-prefix=OPENBSD32 %s7; RUN: llc -mtriple=sparc64-unknown-openbsd < %s | FileCheck -check-prefix=OPENBSD64 %s8 9define void @func() sspreq nounwind {10; LINUX32-LABEL: func:11; LINUX32: ! %bb.0:12; LINUX32-NEXT: save %sp, -104, %sp13; LINUX32-NEXT: ld [%g7+20], %i014; LINUX32-NEXT: st %i0, [%fp+-4]15; LINUX32-NEXT: call capture16; LINUX32-NEXT: add %fp, -8, %o017; LINUX32-NEXT: ld [%fp+-4], %i018; LINUX32-NEXT: ld [%g7+20], %i119; LINUX32-NEXT: cmp %i1, %i020; LINUX32-NEXT: bne .LBB0_221; LINUX32-NEXT: nop22; LINUX32-NEXT: ! %bb.1:23; LINUX32-NEXT: ret24; LINUX32-NEXT: restore25; LINUX32-NEXT: .LBB0_2:26; LINUX32-NEXT: call __stack_chk_fail27; LINUX32-NEXT: nop28;29; LINUX64-LABEL: func:30; LINUX64: .register %g7, #ignore31; LINUX64-NEXT: ! %bb.0:32; LINUX64-NEXT: save %sp, -192, %sp33; LINUX64-NEXT: ldx [%g7+40], %i034; LINUX64-NEXT: stx %i0, [%fp+2039]35; LINUX64-NEXT: call capture36; LINUX64-NEXT: add %fp, 2035, %o037; LINUX64-NEXT: ldx [%fp+2039], %i038; LINUX64-NEXT: ldx [%g7+40], %i139; LINUX64-NEXT: cmp %i1, %i040; LINUX64-NEXT: bne %xcc, .LBB0_241; LINUX64-NEXT: nop42; LINUX64-NEXT: ! %bb.1:43; LINUX64-NEXT: ret44; LINUX64-NEXT: restore45; LINUX64-NEXT: .LBB0_2:46; LINUX64-NEXT: call __stack_chk_fail47; LINUX64-NEXT: nop48;49; SOLARIS32-LABEL: func:50; SOLARIS32: ! %bb.0:51; SOLARIS32-NEXT: save %sp, -104, %sp52; SOLARIS32-NEXT: sethi %hi(__stack_chk_guard), %i053; SOLARIS32-NEXT: ld [%i0+%lo(__stack_chk_guard)], %i154; SOLARIS32-NEXT: st %i1, [%fp+-4]55; SOLARIS32-NEXT: call capture56; SOLARIS32-NEXT: add %fp, -8, %o057; SOLARIS32-NEXT: ld [%i0+%lo(__stack_chk_guard)], %i058; SOLARIS32-NEXT: ld [%fp+-4], %i159; SOLARIS32-NEXT: cmp %i0, %i160; SOLARIS32-NEXT: bne .LBB0_261; SOLARIS32-NEXT: nop62; SOLARIS32-NEXT: ! %bb.1:63; SOLARIS32-NEXT: ret64; SOLARIS32-NEXT: restore65; SOLARIS32-NEXT: .LBB0_2:66; SOLARIS32-NEXT: call __stack_chk_fail67; SOLARIS32-NEXT: nop68;69; SOLARIS64-LABEL: func:70; SOLARIS64: ! %bb.0:71; SOLARIS64-NEXT: save %sp, -192, %sp72; SOLARIS64-NEXT: sethi %h44(__stack_chk_guard), %i073; SOLARIS64-NEXT: add %i0, %m44(__stack_chk_guard), %i074; SOLARIS64-NEXT: sllx %i0, 12, %i075; SOLARIS64-NEXT: ldx [%i0+%l44(__stack_chk_guard)], %i176; SOLARIS64-NEXT: stx %i1, [%fp+2039]77; SOLARIS64-NEXT: call capture78; SOLARIS64-NEXT: add %fp, 2035, %o079; SOLARIS64-NEXT: ldx [%i0+%l44(__stack_chk_guard)], %i080; SOLARIS64-NEXT: ldx [%fp+2039], %i181; SOLARIS64-NEXT: cmp %i0, %i182; SOLARIS64-NEXT: bne %xcc, .LBB0_283; SOLARIS64-NEXT: nop84; SOLARIS64-NEXT: ! %bb.1:85; SOLARIS64-NEXT: ret86; SOLARIS64-NEXT: restore87; SOLARIS64-NEXT: .LBB0_2:88; SOLARIS64-NEXT: call __stack_chk_fail89; SOLARIS64-NEXT: nop90;91; OPENBSD32-LABEL: func:92; OPENBSD32: ! %bb.0:93; OPENBSD32-NEXT: save %sp, -104, %sp94; OPENBSD32-NEXT: sethi %hi(__guard_local), %i095; OPENBSD32-NEXT: ld [%i0+%lo(__guard_local)], %i196; OPENBSD32-NEXT: st %i1, [%fp+-4]97; OPENBSD32-NEXT: call capture98; OPENBSD32-NEXT: add %fp, -8, %o099; OPENBSD32-NEXT: ld [%i0+%lo(__guard_local)], %i0100; OPENBSD32-NEXT: ld [%fp+-4], %i1101; OPENBSD32-NEXT: cmp %i0, %i1102; OPENBSD32-NEXT: bne .LBB0_2103; OPENBSD32-NEXT: nop104; OPENBSD32-NEXT: ! %bb.1: ! %SP_return105; OPENBSD32-NEXT: ret106; OPENBSD32-NEXT: restore107; OPENBSD32-NEXT: .LBB0_2: ! %CallStackCheckFailBlk108; OPENBSD32-NEXT: sethi %hi(.LSSH), %i0109; OPENBSD32-NEXT: call __stack_smash_handler110; OPENBSD32-NEXT: add %i0, %lo(.LSSH), %o0111;112; OPENBSD64-LABEL: func:113; OPENBSD64: ! %bb.0:114; OPENBSD64-NEXT: save %sp, -192, %sp115; OPENBSD64-NEXT: sethi %h44(__guard_local), %i0116; OPENBSD64-NEXT: add %i0, %m44(__guard_local), %i0117; OPENBSD64-NEXT: sllx %i0, 12, %i0118; OPENBSD64-NEXT: ldx [%i0+%l44(__guard_local)], %i1119; OPENBSD64-NEXT: stx %i1, [%fp+2039]120; OPENBSD64-NEXT: call capture121; OPENBSD64-NEXT: add %fp, 2035, %o0122; OPENBSD64-NEXT: ldx [%i0+%l44(__guard_local)], %i0123; OPENBSD64-NEXT: ldx [%fp+2039], %i1124; OPENBSD64-NEXT: cmp %i0, %i1125; OPENBSD64-NEXT: bne %xcc, .LBB0_2126; OPENBSD64-NEXT: nop127; OPENBSD64-NEXT: ! %bb.1: ! %SP_return128; OPENBSD64-NEXT: ret129; OPENBSD64-NEXT: restore130; OPENBSD64-NEXT: .LBB0_2: ! %CallStackCheckFailBlk131; OPENBSD64-NEXT: sethi %h44(.LSSH), %i0132; OPENBSD64-NEXT: add %i0, %m44(.LSSH), %i0133; OPENBSD64-NEXT: sllx %i0, 12, %i0134; OPENBSD64-NEXT: call __stack_smash_handler135; OPENBSD64-NEXT: add %i0, %l44(.LSSH), %o0136 %alloca = alloca i32, align 4137 call void @capture(ptr %alloca)138 ret void139}140 141declare void @capture(ptr)142