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
|
// RUN: cir-opt %s -verify-diagnostics -split-input-file
!s32i = !cir.int<s, 32>
!s64i = !cir.int<s, 64>
module {
// expected-error @below {{type of the real part does not match the complex type}}
cir.global external @ci2 = #cir.const_complex<#cir.int<1> : !s64i, #cir.int<2> : !s32i> : !cir.complex<!s32i>
}
// -----
!s32i = !cir.int<s, 32>
!s64i = !cir.int<s, 64>
module {
// expected-error @below {{type of the imaginary part does not match the complex type}}
cir.global external @ci2 = #cir.const_complex<#cir.int<1> : !s32i, #cir.int<2> : !s64i> : !cir.complex<!s32i>
}
// -----
module {
cir.func @complex_real_invalid_result_type() -> !cir.double {
%0 = cir.alloca !cir.complex<!cir.double>, !cir.ptr<!cir.complex<!cir.double>>, ["c"]
%2 = cir.load align(8) %0 : !cir.ptr<!cir.complex<!cir.double>>, !cir.complex<!cir.double>
// expected-error @below {{result type does not match operand type}}
%3 = cir.complex.real %2 : !cir.complex<!cir.double> -> !cir.float
cir.return
}
}
// -----
module {
cir.func @complex_imag_invalid_result_type() -> !cir.double {
%0 = cir.alloca !cir.complex<!cir.double>, !cir.ptr<!cir.complex<!cir.double>>, ["c"]
%2 = cir.load align(8) %0 : !cir.ptr<!cir.complex<!cir.double>>, !cir.complex<!cir.double>
// expected-error @below {{result type does not match operand type}}
%3 = cir.complex.imag %2 : !cir.complex<!cir.double> -> !cir.float
cir.return
}
}
// -----
module {
cir.func @complex_real_ptr_invalid_result_type() -> !cir.double {
%0 = cir.alloca !cir.complex<!cir.double>, !cir.ptr<!cir.complex<!cir.double>>, ["c"]
// expected-error @below {{result type does not match operand type}}
%1 = cir.complex.real_ptr %0 : !cir.ptr<!cir.complex<!cir.double>> -> !cir.ptr<!cir.float>
cir.return
}
}
|