1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82
|
// RUN: cir-opt %s -verify-diagnostics -split-input-file
!u32i = !cir.int<u, 32>
cir.func @f1() {
// expected-error @below {{'f' does not reference a valid function}}
cir.call @f() : () -> ()
cir.return
}
// -----
!u32i = !cir.int<u, 32>
cir.func private @f2()
cir.func @f3() {
// expected-error @below {{callee returns void but call has results}}
%0 = cir.call @f2() : () -> !u32i
cir.return
}
// -----
!u32i = !cir.int<u, 32>
cir.func private @f4() -> !u32i
cir.func @f5() {
// expected-error @below {{incorrect number of results for callee}}
cir.call @f4() : () -> ()
cir.return
}
// -----
!s32i = !cir.int<s, 32>
!u32i = !cir.int<u, 32>
cir.func private @f6() -> !u32i
cir.func @f7() {
// expected-error @below {{result type mismatch}}
%0 = cir.call @f6() : () -> !s32i
cir.return
}
// -----
!s32i = !cir.int<s, 32>
!u32i = !cir.int<u, 32>
cir.func private @f8(!s32i, !s32i)
cir.func @f9() {
%0 = cir.const #cir.int<1> : !s32i
// expected-error @below {{incorrect number of operands for callee}}
cir.call @f8(%0) : (!s32i) -> ()
cir.return
}
// -----
!s32i = !cir.int<s, 32>
!u32i = !cir.int<u, 32>
cir.func private @f10(!s32i, !s32i)
cir.func @f11() {
%0 = cir.const #cir.int<1> : !s32i
%1 = cir.const #cir.int<2> : !u32i
// expected-error @below {{operand type mismatch: expected operand type '!cir.int<s, 32>', but provided '!cir.int<u, 32>' for operand number 1}}
cir.call @f10(%0, %1) : (!s32i, !u32i) -> ()
cir.return
}
// -----
!s32i = !cir.int<s, 32>
cir.func private @f12(!s32i, !s32i, ...)
cir.func @f13() {
%0 = cir.const #cir.int<1> : !s32i
// expected-error @below {{too few operands for callee}}
cir.call @f12(%0) : (!s32i) -> ()
cir.return
}
|