[clang][modules] Don't prevent translation of FW_Private includes when explicitly...
[llvm-project.git] / llvm / test / CodeGen / ARM / Windows / stack-protector-musttail.ll
blobc35738c87c6c830fb64b7c6ab25d165d9e3f5f15
1 ; RUN: llc -mtriple=thumbv7-windows-msvc -fast-isel %s -o - -start-before=stack-protector -stop-after=stack-protector  | FileCheck %s
3 @var = global ptr null
5 declare void @callee()
7 define void @caller1() sspreq {
8 ; CHECK-LABEL: define void @caller1()
9 ; Prologue:
11 ; CHECK: call void @__security_check_cookie
13 ; CHECK: musttail call void @callee()
14 ; CHECK-NEXT: ret void
15   %var = alloca [2 x i64]
16   store ptr %var, ptr @var
17   musttail call void @callee()
18   ret void
21 define void @justret() sspreq {
22 ; CHECK-LABEL: define void @justret()
23 ; Prologue:
24 ; CHECK: @llvm.stackguard
26 ; CHECK: call void @__security_check_cookie
28 ; CHECK: ret void
29   %var = alloca [2 x i64]
30   store ptr %var, ptr @var
31   br label %retblock
33 retblock:
34   ret void
37 declare ptr @callee2()
39 define ptr @caller2() sspreq {
40 ; CHECK-LABEL: define ptr @caller2()
41 ; Prologue:
42 ; CHECK: @llvm.stackguard
44 ; CHECK: call void @__security_check_cookie
46 ; CHECK: [[TMP:%.*]] = musttail call ptr @callee2()
47 ; CHECK-NEXT: ret ptr [[TMP]]
49   %var = alloca [2 x i64]
50   store ptr %var, ptr @var
51   %tmp = musttail call ptr @callee2()
52   ret ptr %tmp
55 define void @caller3() sspreq {
56 ; CHECK-LABEL: define void @caller3()
57 ; Prologue:
59 ; CHECK: call void @__security_check_cookie
61 ; CHECK: tail call void @callee()
62 ; CHECK-NEXT: ret void
63   %var = alloca [2 x i64]
64   store ptr %var, ptr @var
65   tail call void @callee()
66   ret void
69 define ptr @caller4() sspreq {
70 ; CHECK-LABEL: define ptr @caller4()
71 ; Prologue:
72 ; CHECK: @llvm.stackguard
74 ; CHECK: call void @__security_check_cookie
76 ; CHECK: [[TMP:%.*]] = tail call ptr @callee2()
77 ; CHECK-NEXT: ret ptr [[TMP]]
79   %var = alloca [2 x i64]
80   store ptr %var, ptr @var
81   %tmp = tail call ptr @callee2()
82   ret ptr %tmp