1; Tests that we correctly check parameter types for intrinsics.
2
3; REQUIRES: no_minimal_build
4
5; RUN: not %pnacl_sz -bitcode-as-text \
6; RUN:     %p/Inputs/bad-intrinsic-arg.tbc \
7; RUN:     -bitcode-format=pnacl -notranslate -build-on-read \
8; RUN:     -allow-externally-defined-symbols 2>&1 \
9; RUN:   | FileCheck %s
10
11; CHECK: Invalid type signature for intrinsic llvm.nacl.setjmp: i32 (double)
12
13; RUN: pnacl-bcfuzz -bitcode-as-text \
14; RUN:     %p/Inputs/bad-intrinsic-arg.tbc -output - \
15; RUN:   | not pnacl-bcdis -no-records | FileCheck -check-prefix=ASM %s
16
17; ASM: module {  // BlockID = 8
18; ASM:   declare external i32 @f0(double);
19; ASM:   valuesymtab {  // BlockID = 14
20; ASM:     @f0 : "llvm.nacl.setjmp";
21; ASM: Error(118:0): Intrinsic llvm.nacl.setjmp expects i8* for argument 1. Found: double
22; ASM:   }
23; ASM:   function void @f3(i32 %p0, double %p1) {  // BlockID = 12
24; ASM:     blocks 1;
25; ASM:   %b0:
26; ASM:     %v0 = call i32 @f0(double %p1);
27; ASM:     ret void;
28; ASM:   }
29; ASM: }
30