Mercurial > hg > CbC > CbC_llvm
comparison llvm/test/Transforms/Reassociate/crash.ll @ 150:1d019706d866
LLVM10
author | anatofuz |
---|---|
date | Thu, 13 Feb 2020 15:10:13 +0900 |
parents | |
children | 1f2b6ac9f198 |
comparison
equal
deleted
inserted
replaced
147:c2174574ed3a | 150:1d019706d866 |
---|---|
1 ; RUN: opt -reassociate -disable-output < %s | |
2 | |
3 | |
4 ; rdar://7507855 | |
5 define fastcc i32 @test1() nounwind { | |
6 entry: | |
7 %cond = select i1 undef, i32 1, i32 -1 ; <i32> [#uses=2] | |
8 br label %for.cond | |
9 | |
10 for.cond: ; preds = %for.body, %entry | |
11 %sub889 = sub i32 undef, undef ; <i32> [#uses=1] | |
12 %sub891 = sub i32 %sub889, %cond ; <i32> [#uses=0] | |
13 %add896 = sub i32 0, %cond ; <i32> [#uses=0] | |
14 ret i32 undef | |
15 } | |
16 | |
17 ; PR5981 | |
18 define i32 @test2() nounwind ssp { | |
19 entry: | |
20 %0 = load i32, i32* undef, align 4 | |
21 %1 = mul nsw i32 undef, %0 | |
22 %2 = mul nsw i32 undef, %0 | |
23 %3 = add nsw i32 undef, %1 | |
24 %4 = add nsw i32 %3, %2 | |
25 %5 = add nsw i32 %4, 4 | |
26 %6 = shl i32 %0, 3 | |
27 %7 = add nsw i32 %5, %6 | |
28 br label %bb4.i9 | |
29 | |
30 bb4.i9: | |
31 %8 = add nsw i32 undef, %1 | |
32 ret i32 0 | |
33 } | |
34 | |
35 | |
36 define i32 @test3(i32 %Arg, i32 %x1, i32 %x2, i32 %x3) { | |
37 %A = mul i32 %x1, %Arg | |
38 %B = mul i32 %Arg, %x2 ;; Part of add operation being factored, also used by C | |
39 %C = mul i32 %x3, %B | |
40 | |
41 %D = add i32 %A, %B | |
42 %E = add i32 %D, %C | |
43 ret i32 %E | |
44 } | |
45 | |
46 | |
47 ; rdar://9096268 | |
48 define void @x66303361ae3f602889d1b7d0f86e5455(i8* %arg) nounwind { | |
49 _: | |
50 br label %_33 | |
51 | |
52 _33: ; preds = %_33, %_ | |
53 %tmp348 = load i8, i8* %arg, align 1 | |
54 %tmp349 = lshr i8 %tmp348, 7 | |
55 %tmp350 = or i8 %tmp349, 42 | |
56 %tmp351 = add i8 %tmp350, -42 | |
57 %tmp352 = zext i8 %tmp351 to i32 | |
58 %tmp358 = add i32 %tmp352, -501049439 | |
59 %tmp359 = mul i32 %tmp358, %tmp358 | |
60 %tmp360 = mul i32 %tmp352, %tmp352 | |
61 %tmp361 = sub i32 %tmp359, %tmp360 | |
62 %tmp362 = mul i32 %tmp361, -920056735 | |
63 %tmp363 = add i32 %tmp362, 501049439 | |
64 %tmp364 = add i32 %tmp362, -2000262972 | |
65 %tmp365 = sub i32 %tmp363, %tmp364 | |
66 %tmp366 = sub i32 -501049439, %tmp362 | |
67 %tmp367 = add i32 %tmp365, %tmp366 | |
68 br label %_33 | |
69 } | |
70 | |
71 define void @test(i32 %a, i32 %b, i32 %c, i32 %d) { | |
72 %tmp.2 = xor i32 %a, %b ; <i32> [#uses=1] | |
73 %tmp.5 = xor i32 %c, %d ; <i32> [#uses=1] | |
74 %tmp.6 = xor i32 %tmp.2, %tmp.5 ; <i32> [#uses=1] | |
75 %tmp.9 = xor i32 %c, %a ; <i32> [#uses=1] | |
76 %tmp.12 = xor i32 %b, %d ; <i32> [#uses=1] | |
77 %tmp.13 = xor i32 %tmp.9, %tmp.12 ; <i32> [#uses=1] | |
78 %tmp.16 = xor i32 %tmp.6, %tmp.13 ; <i32> [#uses=0] | |
79 ret void | |
80 } | |
81 | |
82 define i128 @foo() { | |
83 %mul = mul i128 0, 0 | |
84 ret i128 %mul | |
85 } | |
86 | |
87 define void @infinite_loop() { | |
88 entry: | |
89 br label %loop | |
90 loop: | |
91 %x = phi i32 [undef, %entry], [%x, %loop] | |
92 %dead = add i32 %x, 0 | |
93 br label %loop | |
94 unreachable1: | |
95 %y1 = add i32 %y1, 0 | |
96 %z1 = add i32 %y1, 0 | |
97 ret void | |
98 unreachable2: | |
99 %y2 = add i32 %y2, 0 | |
100 %z2 = add i32 %y2, %y2 | |
101 ret void | |
102 unreachable3: | |
103 %y3 = add i32 %y3, %y3 | |
104 %z3 = add i32 %y3, 0 | |
105 ret void | |
106 unreachable4: | |
107 %y4 = add i32 %y4, %y4 | |
108 %z4 = add i32 %y4, %y4 | |
109 ret void | |
110 } | |
111 | |
112 ; PR13185 | |
113 define void @pr13185(i16 %p) { | |
114 entry: | |
115 br label %for.cond | |
116 | |
117 for.cond: ; preds = %for.cond, %entry | |
118 %x.0 = phi i32 [ undef, %entry ], [ %conv, %for.cond ] | |
119 %conv = zext i16 %p to i32 | |
120 br label %for.cond | |
121 } | |
122 | |
123 ; PR12963 | |
124 @a = external global i8 | |
125 define i8 @f0(i8 %x) { | |
126 %t0 = load i8, i8* @a | |
127 %t1 = mul i8 %x, %x | |
128 %t2 = mul i8 %t1, %t1 | |
129 %t3 = mul i8 %t2, %t2 | |
130 %t4 = mul i8 %t3, %x | |
131 %t5 = mul i8 %t4, %t4 | |
132 %t6 = mul i8 %t5, %x | |
133 %t7 = mul i8 %t6, %t0 | |
134 ret i8 %t7 | |
135 } | |
136 | |
137 define i32 @sozefx_(i32 %x, i32 %y) { | |
138 %t0 = sub i32 %x, %x | |
139 %t1 = mul i32 %t0, %t0 | |
140 %t2 = mul i32 %x, %t0 | |
141 %t3 = mul i32 %t1, %t1 | |
142 %t4 = add i32 %t2, %t3 | |
143 %t5 = mul i32 %x, %y | |
144 %t6 = add i32 %t4, %t5 | |
145 ret i32 %t6 | |
146 } | |
147 | |
148 define i32 @bar(i32 %arg, i32 %arg1, i32 %arg2) { | |
149 %tmp1 = mul i32 %arg1, 2 | |
150 %tmp2 = mul i32 %tmp1, 3 | |
151 %tmp3 = mul i32 %arg2, 2 | |
152 %tmp4 = add i32 %tmp1, 1 ; dead code | |
153 %ret = add i32 %tmp2, %tmp3 | |
154 ret i32 %ret | |
155 } | |
156 | |
157 ; PR14060 | |
158 define i8 @hang(i8 %p, i8 %p0, i8 %p1, i8 %p2, i8 %p3, i8 %p4, i8 %p5, i8 %p6, i8 %p7, i8 %p8, i8 %p9) { | |
159 %tmp = zext i1 false to i8 | |
160 %tmp16 = or i8 %tmp, 1 | |
161 %tmp22 = or i8 %p7, %p0 | |
162 %tmp23 = or i8 %tmp16, %tmp22 | |
163 %tmp28 = or i8 %p9, %p1 | |
164 %tmp31 = or i8 %tmp23, %p2 | |
165 %tmp32 = or i8 %tmp31, %tmp28 | |
166 %tmp38 = or i8 %p8, %p3 | |
167 %tmp39 = or i8 %tmp16, %tmp38 | |
168 %tmp43 = or i8 %tmp39, %p4 | |
169 %tmp44 = or i8 %tmp43, 1 | |
170 %tmp47 = or i8 %tmp32, %p5 | |
171 %tmp50 = or i8 %tmp47, %p6 | |
172 %tmp51 = or i8 %tmp44, %tmp50 | |
173 ret i8 %tmp51 | |
174 } |