32 lines · plain
1// Test the HLFIR Expr type2// 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// Scalar expression types6func.func private @scalar01() -> !hlfir.expr<!fir.char<1,?>>7func.func private @scalar02() -> !hlfir.expr<!fir.char<2,10>>8func.func private @scalar03() -> !hlfir.expr<!fir.type<derived{f:f32}>>9// CHECK-LABEL: func.func private @scalar01() -> !hlfir.expr<!fir.char<1,?>>10// CHECK-LABEL: func.func private @scalar02() -> !hlfir.expr<!fir.char<2,10>>11// CHECK-LABEL: func.func private @scalar03() -> !hlfir.expr<!fir.type<derived{f:f32}>>12 13// Array expression types14func.func private @array01() -> !hlfir.expr<?x!fir.char<1,?>>15func.func private @array02() -> !hlfir.expr<10x!fir.char<1,20>>16func.func private @array03() -> !hlfir.expr<10x?x20x?x30x?x40x?x50x?x60xf128>17func.func private @array04() -> !hlfir.expr<10x20x!fir.type<derived{f:f32}>>18func.func private @array05() -> !hlfir.expr<10xi32>19// CHECK-LABEL: func.func private @array01() -> !hlfir.expr<?x!fir.char<1,?>>20// CHECK-LABEL: func.func private @array02() -> !hlfir.expr<10x!fir.char<1,20>>21// CHECK-LABEL: func.func private @array03() -> !hlfir.expr<10x?x20x?x30x?x40x?x50x?x60xf128>22// CHECK-LABEL: func.func private @array04() -> !hlfir.expr<10x20x!fir.type<derived{f:f32}>>23// CHECK-LABEL: func.func private @array05() -> !hlfir.expr<10xi32>24 25// Polymorphic expression types26func.func private @polymorph01() -> !hlfir.expr<!fir.type<derived{f:f32}>?>27func.func private @polymorph02() -> !hlfir.expr<?x!fir.type<derived{f:f32}>?>28func.func private @polymorph03() -> !hlfir.expr<10x!fir.type<derived{f:f32}>?>29// CHECK-LABEL: func.func private @polymorph01() -> !hlfir.expr<!fir.type<derived{f:f32}>?>30// CHECK-LABEL: func.func private @polymorph02() -> !hlfir.expr<?x!fir.type<derived{f:f32}>?>31// CHECK-LABEL: func.func private @polymorph03() -> !hlfir.expr<10x!fir.type<derived{f:f32}>?>32