Bump version to 19.1.0-rc3
[llvm-project.git] / llvm / test / Transforms / GVN / PRE / 2009-02-17-LoadPRECrash.ll
bloba7cb53545847c08df0c29dbd0ae22221c090f1bb
1 ; RUN: opt < %s -passes=gvn -enable-load-pre -disable-output
3         %struct.VEC_rtx_base = type { i32, i32, [1 x ptr] }
4         %struct.VEC_rtx_gc = type { %struct.VEC_rtx_base }
5         %struct.block_symbol = type { [3 x %struct.cgraph_rtl_info], ptr, i64 }
6         %struct.cgraph_rtl_info = type { i32 }
7         %struct.object_block = type { ptr, i32, i64, ptr, ptr }
8         %struct.rtvec_def = type { i32, [1 x ptr] }
9         %struct.rtx_def = type { i16, i8, i8, %struct.u }
10         %struct.section = type { %struct.unnamed_section }
11         %struct.u = type { %struct.block_symbol }
12         %struct.unnamed_section = type { %struct.cgraph_rtl_info, ptr, ptr, ptr }
14 declare ptr @gen_rtvec(i32, ...)
16 declare ptr @plus_constant(ptr, i64)
18 declare ptr @gen_rtx_fmt_Ei(i32, i32, ptr, i32)
20 declare i32 @local_symbolic_operand(ptr, i32)
22 define ptr @legitimize_pic_address(ptr %orig, ptr %reg) nounwind {
23 entry:
24         %addr = alloca ptr              ; <ptr> [#uses=5]
25         %iftmp.1532 = alloca ptr                ; <ptr> [#uses=3]
26         store ptr %orig, ptr null
27         %0 = load ptr, ptr null, align 4                ; <ptr> [#uses=0]
28         br i1 false, label %bb96, label %bb59
30 bb59:           ; preds = %entry
31         %1 = load ptr, ptr %addr, align 4               ; <ptr> [#uses=1]
32         %2 = call i32 @local_symbolic_operand(ptr %1, i32 0) nounwind           ; <i32> [#uses=0]
33         br i1 false, label %bb96, label %bb63
35 bb63:           ; preds = %bb59
36         br i1 false, label %bb64, label %bb74
38 bb64:           ; preds = %bb63
39         br i1 false, label %bb72, label %bb65
41 bb65:           ; preds = %bb64
42         br label %bb72
44 bb72:           ; preds = %bb65, %bb64
45         br label %bb74
47 bb74:           ; preds = %bb72, %bb63
48         br i1 false, label %bb75, label %bb76
50 bb75:           ; preds = %bb74
51         br label %bb76
53 bb76:           ; preds = %bb75, %bb74
54         br i1 false, label %bb77, label %bb84
56 bb77:           ; preds = %bb76
57         %3 = getelementptr [1 x %struct.cgraph_rtl_info], ptr null, i32 0, i32 0                ; <ptr> [#uses=0]
58         unreachable
60 bb84:           ; preds = %bb76
61         br i1 false, label %bb85, label %bb86
63 bb85:           ; preds = %bb84
64         br label %bb87
66 bb86:           ; preds = %bb84
67         br label %bb87
69 bb87:           ; preds = %bb86, %bb85
70         %4 = call ptr @gen_rtx_fmt_Ei(i32 16, i32 0, ptr null, i32 1) nounwind          ; <ptr> [#uses=0]
71         br i1 false, label %bb89, label %bb90
73 bb89:           ; preds = %bb87
74         br label %bb91
76 bb90:           ; preds = %bb87
77         br label %bb91
79 bb91:           ; preds = %bb90, %bb89
80         br i1 false, label %bb92, label %bb93
82 bb92:           ; preds = %bb91
83         br label %bb94
85 bb93:           ; preds = %bb91
86         br label %bb94
88 bb94:           ; preds = %bb93, %bb92
89         unreachable
91 bb96:           ; preds = %bb59, %entry
92         %5 = load ptr, ptr %addr, align 4               ; <ptr> [#uses=1]
93         %6 = getelementptr %struct.rtx_def, ptr %5, i32 0, i32 0                ; <ptr> [#uses=1]
94         %7 = load i16, ptr %6, align 2          ; <i16> [#uses=0]
95         br i1 false, label %bb147, label %bb97
97 bb97:           ; preds = %bb96
98         %8 = load ptr, ptr %addr, align 4               ; <ptr> [#uses=0]
99         br i1 false, label %bb147, label %bb99
101 bb99:           ; preds = %bb97
102         unreachable
104 bb147:          ; preds = %bb97, %bb96
105         %9 = load ptr, ptr %addr, align 4               ; <ptr> [#uses=1]
106         %10 = getelementptr %struct.rtx_def, ptr %9, i32 0, i32 0               ; <ptr> [#uses=1]
107         %11 = load i16, ptr %10, align 2                ; <i16> [#uses=0]
108         br i1 false, label %bb164, label %bb148
110 bb148:          ; preds = %bb147
111         br i1 false, label %bb164, label %bb149
113 bb149:          ; preds = %bb148
114         br i1 false, label %bb150, label %bb152
116 bb150:          ; preds = %bb149
117         unreachable
119 bb152:          ; preds = %bb149
120         br label %bb164
122 bb164:          ; preds = %bb152, %bb148, %bb147
123         %12 = getelementptr [1 x %struct.cgraph_rtl_info], ptr null, i32 0, i32 1               ; <ptr> [#uses=0]
124         br i1 false, label %bb165, label %bb166
126 bb165:          ; preds = %bb164
127         br label %bb167
129 bb166:          ; preds = %bb164
130         br label %bb167
132 bb167:          ; preds = %bb166, %bb165
133         br i1 false, label %bb211, label %bb168
135 bb168:          ; preds = %bb167
136         br i1 false, label %bb211, label %bb170
138 bb170:          ; preds = %bb168
139         br i1 false, label %bb172, label %bb181
141 bb172:          ; preds = %bb170
142         br i1 false, label %bb179, label %bb174
144 bb174:          ; preds = %bb172
145         br i1 false, label %bb177, label %bb175
147 bb175:          ; preds = %bb174
148         br i1 false, label %bb177, label %bb176
150 bb176:          ; preds = %bb175
151         br label %bb178
153 bb177:          ; preds = %bb175, %bb174
154         br label %bb178
156 bb178:          ; preds = %bb177, %bb176
157         br label %bb180
159 bb179:          ; preds = %bb172
160         br label %bb180
162 bb180:          ; preds = %bb179, %bb178
163         br label %bb181
165 bb181:          ; preds = %bb180, %bb170
166         %13 = call ptr (i32, ...) @gen_rtvec(i32 1, ptr null) nounwind          ; <ptr> [#uses=0]
167         unreachable
169 bb211:          ; preds = %bb168, %bb167
170         %14 = load ptr, ptr %addr, align 4              ; <ptr> [#uses=0]
171         %15 = getelementptr [1 x %struct.cgraph_rtl_info], ptr null, i32 0, i32 0               ; <ptr> [#uses=0]
172         store ptr null, ptr null, align 4
173         br i1 false, label %bb212, label %bb213
175 bb212:          ; preds = %bb211
176         store ptr null, ptr %iftmp.1532, align 4
177         br label %bb214
179 bb213:          ; preds = %bb211
180         store ptr null, ptr %iftmp.1532, align 4
181         br label %bb214
183 bb214:          ; preds = %bb213, %bb212
184         %16 = getelementptr [1 x %struct.cgraph_rtl_info], ptr null, i32 0, i32 1               ; <ptr> [#uses=0]
185         %17 = load ptr, ptr %iftmp.1532, align 4                ; <ptr> [#uses=0]
186         %18 = getelementptr %struct.rtx_def, ptr null, i32 0, i32 3             ; <ptr> [#uses=1]
187         %19 = getelementptr %struct.u, ptr %18, i32 0, i32 0            ; <ptr> [#uses=1]
188         %20 = getelementptr [1 x i64], ptr %19, i32 0, i32 0            ; <ptr> [#uses=0]
189         %21 = call ptr @plus_constant(ptr null, i64 0) nounwind         ; <ptr> [#uses=0]
190         unreachable