Don't copy a potentially-uninitialized variable.
[oota-llvm.git] / test / Verifier / alloc-1.ll
1 ; RUN: not llvm-as < %s -o /dev/null |& FileCheck %s
2
3 declare i32 @size() readonly
4 declare i32 @sizeR()
5 declare i32 @size1(i32) readnone
6 declare i32 @size1i8(i8) readnone
7 declare i32* @sizeptr() readnone
8
9 define void @f1(i8** %x, i32* %y) {
10 entry:
11   %0 = load i8** %x, !alloc !0
12   %1 = load i8** %x, !alloc !1
13   %2 = load i8** %x, !alloc !2
14   %3 = load i8** %x, !alloc !3
15   %4 = load i8** %x, !alloc !4
16   %5 = load i8** %x, !alloc !5
17   %6 = load i8** %x, !alloc !6
18   %7 = load i8** %x, !alloc !7
19   %8 = load i8** %x, !alloc !8
20   %9 = load i32* %y, !alloc !9
21   %10 = load i8** %x, !alloc !10
22   %11 = load i8** %x, !alloc !11
23   ret void
24 }
25 ; CHECK: alloc takes at least one operand
26 !0 = metadata !{}
27 ; CHECK: first parameter of alloc must be a function
28 !1 = metadata !{i32 0}
29 ; CHECK: second parameter of alloc must be either a function or null
30 !2 = metadata !{i32 ()* @size, i32 0}
31 ; CHECK: size function number of parameters mismatch
32 !3 = metadata !{i32 ()* @size, null, i32 0}
33 ; CHECK: offset function number of parameters mismatch
34 !4 = metadata !{i32 (i32)* @size1, i32 ()* @size, i32 1}
35 ; CHECK: size function must be readonly/readnone
36 !5 = metadata !{i32 ()* @sizeR, i32 ()* @size}
37 ; CHECK: offset function must be readonly/readnone
38 !6 = metadata !{i32 ()* @size, i32 ()* @sizeR}
39 ; CHECK: size function parameter type mismatch
40 !7 = metadata !{i32 (i32)* @size1, i32 (i8)* @size1i8, i8 5}
41 ; CHECK: offset function parameter type mismatch
42 !8 = metadata !{i32 (i8)* @size1i8, i32 (i32)* @size1, i8 5}
43 ; CHECK: alloc requires a pointer result
44 !9 = metadata !{i32 ()* @size, null}
45 ; CHECK: size function must return an integer
46 !10 = metadata !{i32* ()* @sizeptr, null}
47 ; CHECK: offset function must return an integer
48 !11 = metadata !{i32 ()* @size, i32* ()* @sizeptr}