aboutsummaryrefslogtreecommitdiffstats
path: root/test/CodeGen/ARM/2010-06-21-LdStMultipleBug.ll
blob: 816a6d4f4b93acadfbf571a4cb10fdcdb99cf4ac (plain)
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
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
; RUN: llc < %s -mtriple=armv7-apple-darwin -O3 -mcpu=arm1136jf-s
; PR7421

%struct.CONTENTBOX = type { i32, i32, i32, i32, i32 }
%struct.FILE = type { i8* }
%struct.tilebox = type { %struct.tilebox*, double, double, double, double, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32 }
%struct.UNCOMBOX = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32 }
%struct.cellbox = type { i8*, i32, i32, i32, [9 x i32], i32, i32, i32, i32, i32, i32, i32, double, double, double, double, double, i32, i32, %struct.CONTENTBOX*, %struct.UNCOMBOX*, [8 x %struct.tilebox*] }
%struct.termbox = type { %struct.termbox*, i32, i32, i32, i32, i32 }

@.str2708 = external constant [14 x i8], align 4  ; <[14 x i8]*> [#uses=1]

define void @TW_oldinput(%struct.FILE* nocapture %fp) nounwind {
entry:
  %xcenter = alloca i32, align 4                  ; <i32*> [#uses=2]
  %0 = call i32 (%struct.FILE*, i8*, ...)* @fscanf(%struct.FILE* %fp, i8* getelementptr inbounds ([14 x i8]* @.str2708, i32 0, i32 0), i32* undef, i32* undef, i32* %xcenter, i32* null) nounwind ; <i32> [#uses=1]
  %1 = icmp eq i32 %0, 4                          ; <i1> [#uses=1]
  br i1 %1, label %bb, label %return

bb:                                               ; preds = %bb445, %entry
  %2 = load %struct.cellbox** undef, align 4      ; <%struct.cellbox*> [#uses=2]
  %3 = getelementptr inbounds %struct.cellbox* %2, i32 0, i32 3 ; <i32*> [#uses=1]
  store i32 undef, i32* %3, align 4
  %4 = load i32* undef, align 4                   ; <i32> [#uses=3]
  %5 = icmp eq i32 undef, 1                       ; <i1> [#uses=1]
  br i1 %5, label %bb10, label %bb445

bb10:                                             ; preds = %bb
  br i1 undef, label %bb11, label %bb445

bb11:                                             ; preds = %bb10
  %6 = load %struct.tilebox** undef, align 4      ; <%struct.tilebox*> [#uses=3]
  %7 = load %struct.termbox** null, align 4       ; <%struct.termbox*> [#uses=1]
  %8 = getelementptr inbounds %struct.tilebox* %6, i32 0, i32 13 ; <i32*> [#uses=1]
  %9 = load i32* %8, align 4                      ; <i32> [#uses=3]
  %10 = getelementptr inbounds %struct.tilebox* %6, i32 0, i32 15 ; <i32*> [#uses=1]
  %11 = load i32* %10, align 4                    ; <i32> [#uses=1]
  br i1 false, label %bb12, label %bb13

bb12:                                             ; preds = %bb11
  unreachable

bb13:                                             ; preds = %bb11
  %iftmp.40.0.neg = sdiv i32 0, -2                ; <i32> [#uses=2]
  %12 = sub nsw i32 0, %9                         ; <i32> [#uses=1]
  %13 = sitofp i32 %12 to double                  ; <double> [#uses=1]
  %14 = fdiv double %13, 0.000000e+00             ; <double> [#uses=1]
  %15 = fptosi double %14 to i32                  ; <i32> [#uses=1]
  %iftmp.41.0.in = add i32 0, %15                 ; <i32> [#uses=1]
  %iftmp.41.0.neg = sdiv i32 %iftmp.41.0.in, -2   ; <i32> [#uses=3]
  br i1 undef, label %bb43.loopexit, label %bb21

bb21:                                             ; preds = %bb13
  %16 = fptosi double undef to i32                ; <i32> [#uses=1]
  %17 = fsub double undef, 0.000000e+00           ; <double> [#uses=1]
  %not.460 = fcmp oge double %17, 5.000000e-01    ; <i1> [#uses=1]
  %18 = zext i1 %not.460 to i32                   ; <i32> [#uses=1]
  %iftmp.42.0 = add i32 %16, %iftmp.41.0.neg      ; <i32> [#uses=1]
  %19 = add i32 %iftmp.42.0, %18                  ; <i32> [#uses=1]
  store i32 %19, i32* undef, align 4
  %20 = sub nsw i32 0, %9                         ; <i32> [#uses=1]
  %21 = sitofp i32 %20 to double                  ; <double> [#uses=1]
  %22 = fdiv double %21, 0.000000e+00             ; <double> [#uses=2]
  %23 = fptosi double %22 to i32                  ; <i32> [#uses=1]
  %24 = fsub double %22, undef                    ; <double> [#uses=1]
  %not.461 = fcmp oge double %24, 5.000000e-01    ; <i1> [#uses=1]
  %25 = zext i1 %not.461 to i32                   ; <i32> [#uses=1]
  %iftmp.43.0 = add i32 %23, %iftmp.41.0.neg      ; <i32> [#uses=1]
  %26 = add i32 %iftmp.43.0, %25                  ; <i32> [#uses=1]
  %27 = getelementptr inbounds %struct.tilebox* %6, i32 0, i32 10 ; <i32*> [#uses=1]
  store i32 %26, i32* %27, align 4
  %28 = fptosi double undef to i32                ; <i32> [#uses=1]
  %iftmp.45.0 = add i32 %28, %iftmp.40.0.neg      ; <i32> [#uses=1]
  %29 = add i32 %iftmp.45.0, 0                    ; <i32> [#uses=1]
  store i32 %29, i32* undef, align 4
  br label %bb43.loopexit

bb36:                                             ; preds = %bb43.loopexit, %bb36
  %termptr.0478 = phi %struct.termbox* [ %42, %bb36 ], [ %7, %bb43.loopexit ] ; <%struct.termbox*> [#uses=1]
  %30 = load i32* undef, align 4                  ; <i32> [#uses=1]
  %31 = sub nsw i32 %30, %9                       ; <i32> [#uses=1]
  %32 = sitofp i32 %31 to double                  ; <double> [#uses=1]
  %33 = fdiv double %32, 0.000000e+00             ; <double> [#uses=1]
  %34 = fptosi double %33 to i32                  ; <i32> [#uses=1]
  %iftmp.46.0 = add i32 %34, %iftmp.41.0.neg      ; <i32> [#uses=1]
  %35 = add i32 %iftmp.46.0, 0                    ; <i32> [#uses=1]
  store i32 %35, i32* undef, align 4
  %36 = sub nsw i32 0, %11                        ; <i32> [#uses=1]
  %37 = sitofp i32 %36 to double                  ; <double> [#uses=1]
  %38 = fmul double %37, 0.000000e+00             ; <double> [#uses=1]
  %39 = fptosi double %38 to i32                  ; <i32> [#uses=1]
  %iftmp.47.0 = add i32 %39, %iftmp.40.0.neg      ; <i32> [#uses=1]
  %40 = add i32 %iftmp.47.0, 0                    ; <i32> [#uses=1]
  store i32 %40, i32* undef, align 4
  %41 = getelementptr inbounds %struct.termbox* %termptr.0478, i32 0, i32 0 ; <%struct.termbox**> [#uses=1]
  %42 = load %struct.termbox** %41, align 4       ; <%struct.termbox*> [#uses=2]
  %43 = icmp eq %struct.termbox* %42, null        ; <i1> [#uses=1]
  br i1 %43, label %bb52.loopexit, label %bb36

bb43.loopexit:                                    ; preds = %bb21, %bb13
  br i1 undef, label %bb52.loopexit, label %bb36

bb52.loopexit:                                    ; preds = %bb43.loopexit, %bb36
  %44 = icmp eq i32 %4, 0                         ; <i1> [#uses=1]
  br i1 %44, label %bb.nph485, label %bb54

bb54:                                             ; preds = %bb52.loopexit
  switch i32 %4, label %bb62 [
    i32 2, label %bb56
    i32 3, label %bb57
  ]

bb56:                                             ; preds = %bb54
  br label %bb62

bb57:                                             ; preds = %bb54
  br label %bb62

bb62:                                             ; preds = %bb57, %bb56, %bb54
  unreachable

bb.nph485:                                        ; preds = %bb52.loopexit
  br label %bb248

bb248:                                            ; preds = %bb322, %bb.nph485
  %45 = icmp eq i32 undef, %4                     ; <i1> [#uses=1]
  br i1 %45, label %bb322, label %bb249

bb249:                                            ; preds = %bb248
  %46 = getelementptr inbounds %struct.cellbox* %2, i32 0, i32 21, i32 undef ; <%struct.tilebox**> [#uses=1]
  %47 = load %struct.tilebox** %46, align 4       ; <%struct.tilebox*> [#uses=1]
  %48 = getelementptr inbounds %struct.tilebox* %47, i32 0, i32 11 ; <i32*> [#uses=1]
  store i32 undef, i32* %48, align 4
  unreachable

bb322:                                            ; preds = %bb248
  br i1 undef, label %bb248, label %bb445

bb445:                                            ; preds = %bb322, %bb10, %bb
  %49 = call i32 (%struct.FILE*, i8*, ...)* @fscanf(%struct.FILE* %fp, i8* getelementptr inbounds ([14 x i8]* @.str2708, i32 0, i32 0), i32* undef, i32* undef, i32* %xcenter, i32* null) nounwind ; <i32> [#uses=1]
  %50 = icmp eq i32 %49, 4                        ; <i1> [#uses=1]
  br i1 %50, label %bb, label %return

return:                                           ; preds = %bb445, %entry
  ret void
}

declare i32 @fscanf(%struct.FILE* nocapture, i8* nocapture, ...) nounwind