1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
| ; RUN: opt -S -memoryssa %s | FileCheck %s
; REQUIRES: asserts
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"
; CHECK-LABEL: @func()
; Function Attrs: noinline
define dso_local void @func() unnamed_addr #0 align 2 {
entry:
%NoFinalize.addr = alloca i8, align 1
call void @blah()
call void @blah()
call void @blah()
call void @blah()
call void @blah()
call void @blah()
%call8 = call zeroext i1 @foo()
br i1 %call8, label %if.then9, label %while.cond
if.then9: ; preds = %entry
call void @blah()
call void @blah()
call void @blah()
call void @blah()
call void @blah()
call void @blah()
call void @blah()
br label %while.cond
while.cond: ; preds = %cleanup, %if.then9, %entry
%call34 = call zeroext i1 @foo()
call void @blah()
br i1 %call34, label %while.body, label %while.end
while.body: ; preds = %while.cond
%call35 = call zeroext i1 @foo()
br i1 %call35, label %if.end37, label %if.then36
if.then36: ; preds = %while.body
store i32 2, i32* undef, align 4
br label %cleanup
if.end37: ; preds = %while.body
%call38 = call zeroext i1 @foo()
br i1 %call38, label %if.end46, label %land.lhs.true
land.lhs.true: ; preds = %if.end37
call void @blah()
%call41 = call zeroext i1 @foo()
br i1 %call41, label %if.then42, label %if.end46
if.then42: ; preds = %land.lhs.true
call void @blah()
br label %if.end46
if.end46: ; preds = %if.then42, %land.lhs.true, %if.end37
call void @blah()
call void @blah()
call void @blah()
call void @blah()
br label %cleanup
cleanup: ; preds = %if.end46, %if.then36
call void @blah()
br label %while.cond
while.end: ; preds = %while.cond
call void @blah()
call void @blah()
call void @blah()
call void @blah()
call void @blah()
call void @blah()
call void @blah()
call void @blah()
call void @blah()
call void @blah()
call void @blah()
call void @blah()
call void @blah()
call void @blah()
call void @blah()
%call93 = call zeroext i1 @foo()
br i1 %call93, label %if.end120, label %if.then94
if.then94: ; preds = %while.end
store i32 0, i32* undef, align 4
call void @blah()
call void @blah()
call void @blah()
call void @blah()
call void @blah()
call void @blah()
call void @blah()
call void @blah()
call void @blah()
br label %for.cond
for.cond: ; preds = %for.body, %if.then94
br i1 undef, label %for.body, label %if.end120
for.body: ; preds = %for.cond
call void @blah()
call void @blah()
call void @blah()
call void @blah()
call void @blah()
call void @blah()
call void @blah()
call void @blah()
call void @blah()
call void @blah()
call void @blah()
call void @blah()
call void @blah()
call void @blah()
br label %for.cond
if.end120: ; preds = %for.cond, %while.end
%val = load i8, i8* %NoFinalize.addr, align 1
ret void
}
; Function Attrs: noinline
declare hidden void @blah() unnamed_addr #0 align 2
; Function Attrs: noinline
declare hidden i1 @foo() local_unnamed_addr #0 align 2
attributes #0 = { noinline }
|