File: invalid-complex.cir

package info (click to toggle)
llvm-toolchain-21 1%3A21.1.6-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 2,245,028 kB
  • sloc: cpp: 7,619,726; ansic: 1,434,018; asm: 1,058,748; python: 252,740; f90: 94,671; objc: 70,685; lisp: 42,813; pascal: 18,401; sh: 8,601; ml: 5,111; perl: 4,720; makefile: 3,675; awk: 3,523; javascript: 2,409; xml: 892; fortran: 770
file content (59 lines) | stat: -rw-r--r-- 1,820 bytes parent folder | download | duplicates (3)
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
  }
}