xref: /llvm-project/llvm/test/Bitcode/invalid.test (revision 98204a2e5bb754b0260175e42614c5463807beb5)
1RUN: export LSAN_OPTIONS=detect_leaks=0
2RUN: not llvm-dis -disable-output %p/Inputs/invalid-empty.bc 2>&1 | \
3RUN:   FileCheck --check-prefix=INVALID-EMPTY %s
4RUN: not llvm-dis -disable-output %p/Inputs/invalid-pr20485.bc 2>&1 | \
5RUN:   FileCheck --check-prefix=INVALID-ENCODING %s
6RUN: not llvm-dis -disable-output %p/Inputs/invalid-abbrev.bc 2>&1 | \
7RUN:   FileCheck --check-prefix=BAD-ABBREV %s
8RUN: not llvm-dis -disable-output %p/Inputs/invalid-unexpected-eof.bc 2>&1 | \
9RUN:   FileCheck --check-prefix=UNEXPECTED-EOF %s
10RUN: not llvm-dis -disable-output %p/Inputs/invalid-bad-abbrev-number.bc 2>&1 | \
11RUN:   FileCheck --check-prefix=BAD-ABBREV-NUMBER %s
12RUN: not llvm-dis -disable-output %p/Inputs/invalid-type-table-forward-ref.bc 2>&1 | \
13RUN:   FileCheck --check-prefix=BAD-TYPE-TABLE-FORWARD-REF %s
14RUN: not llvm-dis -disable-output %p/Inputs/invalid-bitwidth.bc 2>&1 | \
15RUN:   FileCheck --check-prefix=BAD-BITWIDTH %s
16RUN: not llvm-dis -disable-output %p/Inputs/invalid-align.bc  2>&1 | \
17RUN:   FileCheck --check-prefix=BAD-ALIGN %s
18RUN: not llvm-dis -disable-output %p/Inputs/invalid-call-non-function-explicit-type.bc 2>&1 | \
19RUN:   FileCheck --check-prefix=NON-FUNCTION-EXPLICIT-CALL %s
20RUN: not llvm-dis -disable-output %p/Inputs/invalid-invoke-mismatched-explicit-type.bc 2>&1 | \
21RUN:   FileCheck --check-prefix=MISMATCHED-EXPLICIT-INVOKE %s
22RUN: not llvm-dis -disable-output %p/Inputs/invalid-invoke-non-function-explicit-type.bc 2>&1 | \
23RUN:   FileCheck --check-prefix=NON-FUNCTION-EXPLICIT-INVOKE %s
24
25INVALID-EMPTY: error: file too small to contain bitcode header
26INVALID-ENCODING: Invalid encoding
27BAD-ABBREV: error: can't skip to bit
28UNEXPECTED-EOF: error: can't skip to bit
29BAD-ABBREV-NUMBER: error: can't skip to bit
30BAD-TYPE-TABLE-FORWARD-REF: Invalid TYPE table: Only named structs can be forward referenced
31BAD-BITWIDTH: error: can't skip to bit
32BAD-ALIGN: Invalid alignment value
33NON-FUNCTION-EXPLICIT-CALL: Explicit call type is not a function type
34MISMATCHED-EXPLICIT-INVOKE: Insufficient operands to call
35NON-FUNCTION-EXPLICIT-INVOKE: Explicit invoke type is not a function type
36
37RUN: not llvm-dis -disable-output %p/Inputs/invalid-extractval-array-idx.bc 2>&1 | \
38RUN:   FileCheck --check-prefix=EXTRACT-ARRAY %s
39RUN: not llvm-dis -disable-output %p/Inputs/invalid-extractval-struct-idx.bc 2>&1 | \
40RUN:   FileCheck --check-prefix=EXTRACT-STRUCT %s
41RUN: not llvm-dis -disable-output %p/Inputs/invalid-extractval-too-many-idxs.bc 2>&1 | \
42RUN:   FileCheck --check-prefix=EXTRACT-IDXS %s
43RUN: not llvm-dis -disable-output %p/Inputs/invalid-insertval-array-idx.bc 2>&1 | \
44RUN:   FileCheck --check-prefix=INSERT-ARRAY %s
45RUN: not llvm-dis -disable-output %p/Inputs/invalid-insertval-struct-idx.bc 2>&1 | \
46RUN:   FileCheck --check-prefix=INSERT-STRUCT %s
47RUN: not llvm-dis -disable-output %p/Inputs/invalid-insertval-too-many-idxs.bc 2>&1 | \
48RUN:   FileCheck --check-prefix=INSERT-IDXS %s
49
50
51EXTRACT-ARRAY: EXTRACTVAL: Invalid array index
52EXTRACT-STRUCT: EXTRACTVAL: Invalid struct index
53EXTRACT-IDXS: EXTRACTVAL: Invalid type
54INSERT-ARRAY: INSERTVAL: Invalid array index
55INSERT-STRUCT: INSERTVAL: Invalid struct index
56INSERT-IDXS: INSERTVAL: Invalid type
57
58RUN: not llvm-dis -disable-output %p/Inputs/invalid-fp-shift.bc 2>&1 | \
59RUN:   FileCheck --check-prefix=FP-SHIFT %s
60
61FP-SHIFT: Invalid record
62
63RUN: not llvm-dis -disable-output %p/Inputs/invalid-abbrev-vbr-size-too-big.bc 2>&1 | \
64RUN:   FileCheck --check-prefix=HUGE-ABBREV-OP %s
65RUN: not llvm-dis -disable-output %p/Inputs/invalid-abbrev-fixed-size-too-big.bc 2>&1 | \
66RUN:   FileCheck --check-prefix=HUGE-ABBREV-OP %s
67
68HUGE-ABBREV-OP: Fixed or VBR abbrev record with size > MaxChunkData
69
70RUN: not llvm-dis -disable-output %p/Inputs/invalid-array-type.bc 2>&1 | \
71RUN:   FileCheck --check-prefix=ARRAY-TYPE %s
72
73ARRAY-TYPE: Array element type can't be an Array or a Blob
74
75RUN: not llvm-dis -disable-output %p/Inputs/invalid-non-vector-extractelement.bc 2>&1 | \
76RUN:   FileCheck --check-prefix=INVALID-TYPE %s
77RUN: not llvm-dis -disable-output %p/Inputs/invalid-non-vector-insertelement.bc 2>&1 | \
78RUN:   FileCheck --check-prefix=INVALID-TYPE %s
79RUN: not llvm-dis -disable-output %p/Inputs/invalid-non-vector-shufflevector.bc 2>&1 | \
80RUN:   FileCheck --check-prefix=INVALID-TYPE %s
81
82INVALID-TYPE: Invalid type for value
83
84RUN: not llvm-dis -disable-output %p/Inputs/invalid-fwdref-type-mismatch.bc 2>&1 | \
85RUN:   FileCheck --check-prefix=FWDREF-TYPE %s
86
87FWDREF-TYPE: Invalid record
88
89RUN: not llvm-dis -disable-output %p/Inputs/invalid-fwdref-type-mismatch-2.bc 2>&1 | \
90RUN:   FileCheck --check-prefix=FWDREF-TYPE-MISMATCH %s
91
92FWDREF-TYPE-MISMATCH: Malformed block
93
94RUN: not llvm-dis -disable-output %p/Inputs/invalid-array-element-type.bc 2>&1 | \
95RUN:   FileCheck --check-prefix=ELEMENT-TYPE %s
96RUN: not llvm-dis -disable-output %p/Inputs/invalid-vector-element-type.bc 2>&1 | \
97RUN:   FileCheck --check-prefix=ELEMENT-TYPE %s
98RUN: not llvm-dis -disable-output %p/Inputs/invalid-pointer-element-type.bc 2>&1 | \
99RUN:   FileCheck --check-prefix=ELEMENT-TYPE %s
100
101ELEMENT-TYPE: Invalid type
102
103RUN: not llvm-dis -disable-output %p/Inputs/invalid-cast.bc 2>&1 | \
104RUN:   FileCheck --check-prefix=INVALID-CAST %s
105
106INVALID-CAST: Invalid cast
107
108RUN: not llvm-dis -disable-output %p/Inputs/invalid-array-op-not-2nd-to-last.bc 2>&1 | \
109RUN:   FileCheck --check-prefix=ARRAY-NOT-2LAST %s
110
111ARRAY-NOT-2LAST: Array op not second to last
112
113RUN: not llvm-dis -disable-output %p/Inputs/invalid-too-big-fwdref.bc 2>&1 | \
114RUN:   FileCheck --check-prefix=HUGE-FWDREF %s
115
116HUGE-FWDREF: Invalid record
117
118RUN: not llvm-dis -disable-output %p/Inputs/invalid-load-pointer-type.bc 2>&1 | \
119RUN:   FileCheck --check-prefix=LOAD-BAD-TYPE %s
120
121LOAD-BAD-TYPE: Load operand is not a pointer type
122
123RUN: not llvm-dis -disable-output %p/Inputs/invalid-GCTable-overflow.bc 2>&1 | \
124RUN:   FileCheck --check-prefix=GCTABLE-OFLOW %s
125
126GCTABLE-OFLOW: Invalid ID
127
128RUN: not llvm-dis -disable-output %p/Inputs/invalid-insert-0-indices.bc 2>&1 | \
129RUN:   FileCheck --check-prefix=INSERT-0-IDXS %s
130
131INSERT-0-IDXS: INSERTVAL: Invalid instruction with 0 indices
132
133RUN: not llvm-dis -disable-output %p/Inputs/invalid-extract-0-indices.bc 2>&1 | \
134RUN:   FileCheck --check-prefix=EXTRACT-0-IDXS %s
135
136EXTRACT-0-IDXS: EXTRACTVAL: Invalid instruction with 0 indices
137
138RUN: not llvm-dis -disable-output %p/Inputs/invalid-load-ptr-type.bc 2>&1 | \
139RUN:   FileCheck --check-prefix=BAD-LOAD-PTR-TYPE %s
140
141BAD-LOAD-PTR-TYPE: error: can't skip to bit
142
143RUN: not llvm-dis -disable-output %p/Inputs/invalid-inserted-value-type-mismatch.bc 2>&1 | \
144RUN:   FileCheck --check-prefix=INSERT-TYPE-MISMATCH %s
145
146INSERT-TYPE-MISMATCH: Inserted value type doesn't match aggregate type
147
148RUN: not llvm-dis -disable-output %p/Inputs/invalid-code-len-width.bc 2>&1 | \
149RUN:   FileCheck --check-prefix=INVALID-CODELENWIDTH %s
150
151INVALID-CODELENWIDTH: error: can't skip to bit
152
153RUN: not llvm-dis -disable-output %p/Inputs/invalid-function-argument-type.bc 2>&1 | \
154RUN:   FileCheck --check-prefix=INVALID-ARGUMENT-TYPE %s
155
156INVALID-ARGUMENT-TYPE: Invalid function argument type
157
158RUN: not llvm-dis -disable-output %p/Inputs/invalid-function-comdat-id.bc 2>&1 | \
159RUN:   FileCheck --check-prefix=INVALID-FCOMDAT-ID %s
160
161INVALID-FCOMDAT-ID: Malformed block
162
163RUN: not llvm-dis -disable-output %p/Inputs/invalid-global-var-comdat-id.bc 2>&1 | \
164RUN:   FileCheck --check-prefix=INVALID-GVCOMDAT-ID %s
165
166INVALID-GVCOMDAT-ID: Invalid global variable comdat ID
167
168RUN: not llvm-dis -disable-output %p/Inputs/invalid-abbrev-no-operands.bc 2>&1 | \
169RUN:   FileCheck --check-prefix=ABBREV-NO-OPS %s
170
171ABBREV-NO-OPS: Abbrev record with no operands
172
173RUN: not llvm-dis -disable-output %p/Inputs/invalid-array-operand-encoding.bc 2>&1 | \
174RUN:   FileCheck --check-prefix=ARRAY-OP-ENC %s
175
176ARRAY-OP-ENC: Malformed block
177
178RUN: not llvm-dis -disable-output %p/Inputs/invalid-metadata-not-followed-named-node.bc 2>&1 | \
179RUN:   FileCheck --check-prefix=META-NOT-FOLLOWED-BY-NAMED-META %s
180
181META-NOT-FOLLOWED-BY-NAMED-META: Malformed block
182
183RUN: not llvm-dis -disable-output %p/Inputs/invalid-vector-length.bc 2>&1 | \
184RUN:   FileCheck --check-prefix=VECTOR-LENGTH %s
185
186VECTOR-LENGTH: Invalid vector length
187
188RUN: not llvm-dis -disable-output %p/Inputs/invalid-alias-type-mismatch.bc 2>&1 | \
189RUN:   FileCheck --check-prefix=ALIAS-TYPE-MISMATCH %s
190
191ALIAS-TYPE-MISMATCH: Insufficient function protos
192
193RUN: not llvm-dis -disable-output %p/Inputs/invalid-no-function-block.bc 2>&1 | \
194RUN:   FileCheck --check-prefix=NO-FUNCTION-BLOCK %s
195
196NO-FUNCTION-BLOCK: Trying to materialize functions before seeing function blocks (Producer: 'LLVM3.8.0git' Reader: 'LLVM
197
198RUN: not llvm-dis -disable-output %p/Inputs/invalid-name-with-0-byte.bc 2>&1 | \
199RUN:   FileCheck --check-prefix=NAME-WITH-0 %s
200
201NAME-WITH-0: Malformed block
202
203RUN: not llvm-dis -disable-output %p/Inputs/invalid-void-constant.bc 2>&1 | \
204RUN:   FileCheck --check-prefix=VOID-CONSTANT-TYPE %s
205
206VOID-CONSTANT-TYPE: Invalid constant type
207
208RUN: not llvm-dis -disable-output %p/Inputs/invalid-gep-no-operands.bc 2>&1 | \
209RUN:   FileCheck --check-prefix=GEP-NO-OPERANDS %s
210
211GEP-NO-OPERANDS: Constant GEP record must have at least two elements
212
213RUN: not llvm-dis -disable-output %p/Inputs/invalid-constant-gep.bc 2>&1 | \
214RUN:   FileCheck --check-prefix=INVALID-CONSTANT-GEP %s
215
216INVALID-CONSTANT-GEP: Constant GEP record must have at least two elements
217
218RUN: not llvm-dis -disable-output %p/Inputs/invalid-nonpointer-storeatomic.bc 2>&1 | \
219RUN:   FileCheck --check-prefix=NONPOINTER-STOREATOMIC %s
220
221NONPOINTER-STOREATOMIC: Invalid record
222
223RUN: not llvm-dis -disable-output %p/Inputs/invalid-nonpointer-atomicrmw.bc 2>&1 | \
224RUN:   FileCheck --check-prefix=NONPOINTER-ATOMICRMW %s
225
226NONPOINTER-ATOMICRMW: Invalid record
227
228RUN: not llvm-dis -disable-output %p/Inputs/invalid-fcmp-opnum.bc 2>&1 | \
229RUN:   FileCheck --check-prefix=INVALID-FCMP-OPNUM %s
230
231INVALID-FCMP-OPNUM: Invalid record: operand number exceeded available operands
232
233RUN: not llvm-dis -disable-output %p/Inputs/invalid-cmpxchg-ordering.bc 2>&1 | \
234RUN:   FileCheck --check-prefix=CMPXCHG-ORDERING %s
235RUN: not llvm-dis -disable-output %p/Inputs/invalid-cmpxchg-ordering-2.bc 2>&1 | \
236RUN:   FileCheck --check-prefix=CMPXCHG-ORDERING %s
237RUN: not llvm-dis -disable-output %p/Inputs/invalid-cmpxchg-ordering-3.bc 2>&1 | \
238RUN:   FileCheck --check-prefix=CMPXCHG-ORDERING %s
239RUN: not llvm-dis -disable-output %p/Inputs/invalid-cmpxchg-ordering-4.bc 2>&1 | \
240RUN:   FileCheck --check-prefix=CMPXCHG-ORDERING %s
241
242CMPXCHG-ORDERING: Invalid cmpxchg {{failure|success}} ordering
243
244RUN: not llvm-dis -disable-output %p/Inputs/invalid-abbrev-number.bc 2>&1 | \
245RUN:   FileCheck --check-prefix=INVALID-ABBREV-NUMBER %s
246
247INVALID-ABBREV-NUMBER: Invalid abbrev number
248
249RUN: not llvm-dis -disable-output %p/Inputs/invalid-attribute-group-entry.bc 2>&1 | \
250RUN:   FileCheck --check-prefix=INVALID-ATTRIBUTE-GROUP-ENTRY %s
251
252INVALID-ATTRIBUTE-GROUP-ENTRY: Invalid attribute group entry
253
254RUN: not llvm-dis -disable-output %p/Inputs/unterminated-blob.bc 2>&1 | \
255RUN:   FileCheck --check-prefix=UNTERMINATED-BLOB %s
256
257UNTERMINATED-BLOB: Blob ends too soon
258
259RUN: not llvm-dis -disable-output %p/Inputs/invalid-value-symbol-table.bc 2>&1 | \
260RUN:   FileCheck --check-prefix=INVALID-VALUE-SYMBOL-TABLE %s
261
262INVALID-VALUE-SYMBOL-TABLE: Invalid value reference in symbol table
263
264RUN: not llvm-dis -disable-output %p/Inputs/unterminated-vbr.bc 2>&1 | \
265RUN:   FileCheck --check-prefix=UNTERMINATED-VBR %s
266
267UNTERMINATED-VBR: Failed to read size: Unterminated VBR
268
269RUN: not llvm-dis -disable-output %p/Inputs/comdat-name-too-large.bc 2>&1 | \
270RUN:   FileCheck --check-prefix=COMDAT-NAME-TOO-LARGE %s
271
272COMDAT-NAME-TOO-LARGE: Comdat name size too large
273
274RUN: not llvm-dis -disable-output %p/Inputs/invalid-chunk-size.bc 2>&1 | \
275RUN:   FileCheck --check-prefix=INVALID-CHUNK-SIZE %s
276
277INVALID-CHUNK-SIZE: Fixed or VBR abbrev record with size > MaxChunkData
278
279RUN: not llvm-dis -disable-output %p/Inputs/invalid-diimportedentity-record.bc 2>&1 | \
280RUN:   FileCheck --check-prefix=INVALID-DIIMPORTEDENTITY-RECORD %s
281
282INVALID-DIIMPORTEDENTITY-RECORD: Invalid DIImportedEntity record
283
284RUN: not llvm-dis -disable-output %p/Inputs/invalid-forward-declare.bc 2>&1 | \
285RUN:   FileCheck --check-prefix=INVALID-FORWARD-DECLARE %s
286
287INVALID-FORWARD-DECLARE: Assigned value does not match type of forward declaration
288
289RUN: not llvm-dis -disable-output %p/Inputs/invalid-initializer.bc 2>&1 | \
290RUN:   FileCheck --check-prefix=INVALID-INITIALIZER %s
291
292INVALID-INITIALIZER: Invalid record
293