1; RUN: opt < %s -basicaa -slp-vectorizer -dce -S -mtriple=x86_64-apple-macosx10.8.0 -mcpu=corei7
2
3target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128"
4target triple = "x86_64-apple-macosx10.8.0"
5
6define void @main() {
7entry:
8  br label %for.body
9
10for.body:                                         ; preds = %for.end44, %entry
11  br label %for.cond4.preheader
12
13for.cond4.preheader:                              ; preds = %if.then25, %for.body
14  br label %for.body6
15
16for.body6:                                        ; preds = %for.inc21, %for.cond4.preheader
17  br label %for.body12
18
19for.body12:                                       ; preds = %if.end, %for.body6
20  %fZImg.069 = phi double [ undef, %for.body6 ], [ %add19, %if.end ]
21  %fZReal.068 = phi double [ undef, %for.body6 ], [ %add20, %if.end ]
22  %mul13 = fmul double %fZReal.068, %fZReal.068
23  %mul14 = fmul double %fZImg.069, %fZImg.069
24  %add15 = fadd double %mul13, %mul14
25  %cmp16 = fcmp ogt double %add15, 4.000000e+00
26  br i1 %cmp16, label %for.inc21, label %if.end
27
28if.end:                                           ; preds = %for.body12
29  %mul18 = fmul double undef, %fZImg.069
30  %add19 = fadd double undef, %mul18
31  %sub = fsub double %mul13, %mul14
32  %add20 = fadd double undef, %sub
33  br i1 undef, label %for.body12, label %for.inc21
34
35for.inc21:                                        ; preds = %if.end, %for.body12
36  br i1 undef, label %for.end23, label %for.body6
37
38for.end23:                                        ; preds = %for.inc21
39  br i1 undef, label %if.then25, label %if.then26
40
41if.then25:                                        ; preds = %for.end23
42  br i1 undef, label %for.end44, label %for.cond4.preheader
43
44if.then26:                                        ; preds = %for.end23
45  unreachable
46
47for.end44:                                        ; preds = %if.then25
48  br i1 undef, label %for.end48, label %for.body
49
50for.end48:                                        ; preds = %for.end44
51  ret void
52}
53
54%struct.hoge = type { double, double, double}
55
56define void @zot(%struct.hoge* %arg) {
57bb:
58  %tmp = load double* undef, align 8
59  %tmp1 = fsub double %tmp, undef
60  %tmp2 = load double* undef, align 8
61  %tmp3 = fsub double %tmp2, undef
62  %tmp4 = fmul double %tmp3, undef
63  %tmp5 = fmul double %tmp3, undef
64  %tmp6 = fsub double %tmp5, undef
65  %tmp7 = getelementptr inbounds %struct.hoge* %arg, i64 0, i32 1
66  store double %tmp6, double* %tmp7, align 8
67  %tmp8 = fmul double %tmp1, undef
68  %tmp9 = fsub double %tmp8, undef
69  %tmp10 = getelementptr inbounds %struct.hoge* %arg, i64 0, i32 2
70  store double %tmp9, double* %tmp10, align 8
71  br i1 undef, label %bb11, label %bb12
72
73bb11:                                             ; preds = %bb
74  br label %bb14
75
76bb12:                                             ; preds = %bb
77  %tmp13 = fmul double undef, %tmp2
78  br label %bb14
79
80bb14:                                             ; preds = %bb12, %bb11
81  ret void
82}
83
84
85%struct.rc4_state.0.24 = type { i32, i32, [256 x i32] }
86
87define void @rc4_crypt(%struct.rc4_state.0.24* nocapture %s) {
88entry:
89  %x1 = getelementptr inbounds %struct.rc4_state.0.24* %s, i64 0, i32 0
90  %y2 = getelementptr inbounds %struct.rc4_state.0.24* %s, i64 0, i32 1
91  br i1 undef, label %for.body, label %for.end
92
93for.body:                                         ; preds = %for.body, %entry
94  %x.045 = phi i32 [ %conv4, %for.body ], [ undef, %entry ]
95  %conv4 = and i32 undef, 255
96  %conv7 = and i32 undef, 255
97  %idxprom842 = zext i32 %conv7 to i64
98  br i1 undef, label %for.end, label %for.body
99
100for.end:                                          ; preds = %for.body, %entry
101  %x.0.lcssa = phi i32 [ undef, %entry ], [ %conv4, %for.body ]
102  %y.0.lcssa = phi i32 [ undef, %entry ], [ %conv7, %for.body ]
103  store i32 %x.0.lcssa, i32* %x1, align 4
104  store i32 %y.0.lcssa, i32* %y2, align 4
105  ret void
106}
107
108