| Index: test/NaCl/PNaClABI/types-function.ll
|
| diff --git a/test/NaCl/PNaClABI/types-function.ll b/test/NaCl/PNaClABI/types-function.ll
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..4aa6f276fd99ca19304c5b337eb373f0aa139c85
|
| --- /dev/null
|
| +++ b/test/NaCl/PNaClABI/types-function.ll
|
| @@ -0,0 +1,40 @@
|
| +; RUN: not pnacl-abicheck < %s | FileCheck %s
|
| +; Test type-checking in function bodies. This test is not intended to verify
|
| +; all the rules about the various types, but instead to make sure that types
|
| +; stashed in various places in function bodies are caught.
|
| +
|
| +@a2 = private global i17 zeroinitializer
|
| +
|
| +; CHECK: Function func has disallowed type: void (i15)
|
| +declare void @func(i15 %arg)
|
| +
|
| +!llvm.foo = !{!0}
|
| +!0 = metadata !{ half 0.0}
|
| +
|
| +define void @types() {
|
| +; CHECK: bad result type: {{.*}} fptrunc
|
| + %h1 = fptrunc double undef to half
|
| +
|
| +; CHECK: bad operand: {{.*}} bitcast half
|
| + %h2 = bitcast half 0.0 to i16
|
| +
|
| +; see below...
|
| + %h3 = fadd double 0.0, fpext (half 0.0 to double)
|
| +
|
| +; CHECK: bad pointer: store
|
| + store i32 0, i32* bitcast (i17* @a2 to i32*), align 1
|
| +
|
| +; CHECK: bad function callee operand: call void @func(i15 1)
|
| + call void @func(i15 1)
|
| +
|
| +; CHECK: Function types has disallowed instruction metadata: !foo
|
| + ret void, !foo !0
|
| +}
|
| +; CHECK-NOT: disallowed
|
| +
|
| +
|
| +; TODO:
|
| +; the bitcode reader seems to expand some operations inline
|
| +; (e.g. fpext, sext, uitofp) such that doing something like
|
| +; %h3 = fadd double 0.0, fpext (half 0.0 to double)
|
| +; means the verifier pass will never see the fpext or its operands
|
|
|