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