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