blob: a9c7e38f73af62d3f823e520f9f69bee2ceac69b [file] [log] [blame]
// 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
}