// RUN: cir-opt %s -verify-diagnostics -split-input-file !u32i = !cir.int cir.func @f1() { // expected-error @below {{'f' does not reference a valid function}} cir.call @f() : () -> () cir.return } // ----- !u32i = !cir.int 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 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 !u32i = !cir.int cir.func private @f6() -> !u32i cir.func @f7() { // expected-error @below {{result type mismatch}} %0 = cir.call @f6() : () -> !s32i cir.return } // ----- !s32i = !cir.int !u32i = !cir.int 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 !u32i = !cir.int 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', but provided '!cir.int' for operand number 1}} cir.call @f10(%0, %1) : (!s32i, !u32i) -> () cir.return } // ----- !s32i = !cir.int 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 }