| // 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 |
| } |