brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.7 KiB · 083aca3 Raw
124 lines · plain
1// Test the FIR types2// Parse types and check that we can reparse what we print.3// RUN: fir-opt --split-input-file %s | fir-opt --split-input-file | FileCheck %s4 5// Fortran Intrinsic types6// CHECK-LABEL: func private @it1() -> !fir.int<4>7// CHECK-LABEL: func private @it3() -> complex<f64>8// CHECK-LABEL: func private @it4() -> !fir.logical<1>9// CHECK-LABEL: func private @it5() -> !fir.char<1>10// CHECK-LABEL: func private @it6() -> !fir.char<2,10>11// CHECK-LABEL: func private @it7() -> !fir.char<4,?>12func.func private @it1() -> !fir.int<4>13func.func private @it3() -> complex<f64>14func.func private @it4() -> !fir.logical<1>15func.func private @it5() -> !fir.char<1>16func.func private @it6() -> !fir.char<2,10>17func.func private @it7() -> !fir.char<4,?>18 19// -----20 21// Fortran Derived types (records)22// CHECK-LABEL: func private @dvd1() -> !fir.type<derived1>23// CHECK-LABEL: func private @dvd2() -> !fir.type<derived2(p:i32)>24// CHECK-LABEL: func private @dvd3() -> !fir.type<derived3{f:f32}>25// CHECK-LABEL: func private @dvd4() -> !fir.type<derived4(p:i8){f:f32}>26// CHECK-LABEL: func private @dvd5() -> !fir.type<derived5(p1:i8,p2:i8,p3:i8,p4:i8,p5:i8){f1:f32,f2:f32,f3:f32,f4:f32,f5:f32,f6:f32,f7:f32,f8:f32}>27// CHECK-LABEL: func private @dvd6() -> !fir.type<derived6{f:!fir.ptr<!fir.type<derived6>>}>28// CHECK-LABEL: func private @dvd7() -> !fir.type<derived_with_field_name_same_as_integer_type{i32:f32}>29func.func private @dvd1() -> !fir.type<derived1>30func.func private @dvd2() -> !fir.type<derived2(p:i32)>31func.func private @dvd3() -> !fir.type<derived3{f:f32}>32func.func private @dvd4() -> !fir.type<derived4(p:i8){f:f32}>33func.func private @dvd5() -> !fir.type<derived5(p1:i8,p2:i8,p3:i8,p4:i8,p5:i8){f1:f32,f2:f32,f3:f32,f4:f32,f5:f32,f6:f32,f7:f32,f8:f32}>34func.func private @dvd6() -> !fir.type<derived6{f:!fir.ptr<!fir.type<derived6>>}>35func.func private @dvd7() -> !fir.type<derived_with_field_name_same_as_integer_type{i32:f32}>36 37// -----38 39// FIR array types40// CHECK-LABEL: func private @arr1() -> !fir.array<10xf32>41// CHECK-LABEL: func private @arr2() -> !fir.array<10x10xf32>42// CHECK-LABEL: func private @arr3() -> !fir.array<?xf32>43// CHECK-LABEL: func private @arr4() -> !fir.array<10x?xf32>44// CHECK-LABEL: func private @arr5() -> !fir.array<?x?xf32>45// CHECK-LABEL: func private @arr6() -> !fir.array<*:f32>46// CHECK-LABEL: func private @arr7() -> !fir.array<1x2x?x4x5x6x7x8x9xf32>47func.func private @arr1() -> !fir.array<10xf32>48func.func private @arr2() -> !fir.array<10x10xf32>49func.func private @arr3() -> !fir.array<?xf32>50func.func private @arr4() -> !fir.array<10x?xf32>51func.func private @arr5() -> !fir.array<?x?xf32>52func.func private @arr6() -> !fir.array<*:f32>53func.func private @arr7() -> !fir.array<1x2x?x4x5x6x7x8x9xf32>54 55// -----56 57// FIR pointer-like types58// CHECK-LABEL: func private @mem1() -> !fir.ref<i32>59// CHECK-LABEL: func private @mem2() -> !fir.ptr<i32>60// CHECK-LABEL: func private @mem3() -> !fir.heap<i32>61// CHECK-LABEL: func private @mem4() -> !fir.ref<() -> ()>62// CHECK-LABEL: func private @mem5() -> !fir.llvm_ptr<!fir.ref<f32>>63// CHECK-LABEL: func private @mem6() -> !fir.llvm_ptr<i8>64func.func private @mem1() -> !fir.ref<i32>65func.func private @mem2() -> !fir.ptr<i32>66func.func private @mem3() -> !fir.heap<i32>67func.func private @mem4() -> !fir.ref<() -> ()>68func.func private @mem5() -> !fir.llvm_ptr<!fir.ref<f32>>69func.func private @mem6() -> !fir.llvm_ptr<i8>70 71// -----72 73// FIR box types (descriptors)74// CHECK-LABEL: func private @box1() -> !fir.box<!fir.array<?xf32>>75// CHECK-LABEL: func private @box2() -> !fir.boxchar<2>76// CHECK-LABEL: func private @box3() -> !fir.boxproc<(i32, i32) -> i64>77// CHECK-LABEL: func private @box4() -> !fir.box<none>78// CHECK-LABEL: func private @box5() -> !fir.box<!fir.type<derived3{f:f32}>>79func.func private @box1() -> !fir.box<!fir.array<?xf32>>80func.func private @box2() -> !fir.boxchar<2>81func.func private @box3() -> !fir.boxproc<(i32, i32) -> i64>82func.func private @box4() -> !fir.box<none>83func.func private @box5() -> !fir.box<!fir.type<derived3{f:f32}>>84 85// -----86 87// FIR misc. types88// CHECK-LABEL: func private @oth1() -> !fir.shape<1>89// CHECK-LABEL: func private @oth2() -> !fir.field90// CHECK-LABEL: func private @oth3() -> !fir.tdesc<!fir.type<derived7{f1:f32,f2:f32}>>91// CHECK-LABEL: func private @oth4() -> !fir.shapeshift<15>92// CHECK-LABEL: func private @oth5() -> !fir.slice<8>93func.func private @oth1() -> !fir.shape<1>94func.func private @oth2() -> !fir.field95func.func private @oth3() -> !fir.tdesc<!fir.type<derived7{f1:f32,f2:f32}>>96func.func private @oth4() -> !fir.shapeshift<15>97func.func private @oth5() -> !fir.slice<8>98 99// -----100 101// FIR vector102// CHECK-LABEL: func private @vecty(i1) -> !fir.vector<10:i32>103func.func private @vecty(i1) -> !fir.vector<10:i32>104 105// -----106 107// FIR Class type108// CHECK-LABEL: class1() -> !fir.class<!fir.type<c1{p:i32}>>109// CHECK-LABEL: class2() -> !fir.class<!fir.array<?x!fir.type<c1{p:i32}>>>110// CHECK-LABEL: class3() -> !fir.class<!fir.heap<!fir.type<c1{p:i32}>>>111// CHECK-LABEL: class4() -> !fir.class<!fir.ptr<!fir.type<c1{p:i32}>>>112// CHECK-LABEL: class5() -> !fir.class<none>113// CHECK-LABEL: class6() -> !fir.class<!fir.array<?xnone>>114// CHECK-LABEL: class7() -> !fir.class<!fir.heap<none>>115// CHECK-LABEL: class8() -> !fir.class<!fir.ptr<none>>116func.func private @class1() -> !fir.class<!fir.type<c1{p:i32}>>117func.func private @class2() -> !fir.class<!fir.array<?x!fir.type<c1{p:i32}>>>118func.func private @class3() -> !fir.class<!fir.heap<!fir.type<c1{p:i32}>>>119func.func private @class4() -> !fir.class<!fir.ptr<!fir.type<c1{p:i32}>>>120func.func private @class5() -> !fir.class<none>121func.func private @class6() -> !fir.class<!fir.array<?xnone>>122func.func private @class7() -> !fir.class<!fir.heap<none>>123func.func private @class8() -> !fir.class<!fir.ptr<none>>124