brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.7 KiB · c35738c Raw
84 lines · plain
1; RUN: llc -mtriple=thumbv7-windows-msvc -fast-isel %s -o - -start-before=stack-protector -stop-after=stack-protector  | FileCheck %s2 3@var = global ptr null4 5declare void @callee()6 7define void @caller1() sspreq {8; CHECK-LABEL: define void @caller1()9; Prologue:10 11; CHECK: call void @__security_check_cookie12 13; CHECK: musttail call void @callee()14; CHECK-NEXT: ret void15  %var = alloca [2 x i64]16  store ptr %var, ptr @var17  musttail call void @callee()18  ret void19}20 21define void @justret() sspreq {22; CHECK-LABEL: define void @justret()23; Prologue:24; CHECK: @llvm.stackguard25 26; CHECK: call void @__security_check_cookie27 28; CHECK: ret void29  %var = alloca [2 x i64]30  store ptr %var, ptr @var31  br label %retblock32 33retblock:34  ret void35}36 37declare ptr @callee2()38 39define ptr @caller2() sspreq {40; CHECK-LABEL: define ptr @caller2()41; Prologue:42; CHECK: @llvm.stackguard43 44; CHECK: call void @__security_check_cookie45 46; CHECK: [[TMP:%.*]] = musttail call ptr @callee2()47; CHECK-NEXT: ret ptr [[TMP]]48 49  %var = alloca [2 x i64]50  store ptr %var, ptr @var51  %tmp = musttail call ptr @callee2()52  ret ptr %tmp53}54 55define void @caller3() sspreq {56; CHECK-LABEL: define void @caller3()57; Prologue:58 59; CHECK: call void @__security_check_cookie60 61; CHECK: tail call void @callee()62; CHECK-NEXT: ret void63  %var = alloca [2 x i64]64  store ptr %var, ptr @var65  tail call void @callee()66  ret void67}68 69define ptr @caller4() sspreq {70; CHECK-LABEL: define ptr @caller4()71; Prologue:72; CHECK: @llvm.stackguard73 74; CHECK: call void @__security_check_cookie75 76; CHECK: [[TMP:%.*]] = tail call ptr @callee2()77; CHECK-NEXT: ret ptr [[TMP]]78 79  %var = alloca [2 x i64]80  store ptr %var, ptr @var81  %tmp = tail call ptr @callee2()82  ret ptr %tmp83}84