|
| 1 | +// Test maxval inlining for both elemental and designate |
| 2 | +// RUN: fir-opt %s -opt-bufferization | FileCheck %s |
| 3 | + |
| 4 | +func.func @_QQmain() { |
| 5 | + %c8 = arith.constant 8 : index |
| 6 | + %1 = fir.alloca !fir.char<1, 8> |
| 7 | + %24 = fir.shape %c8 : (index) -> !fir.shape<1> |
| 8 | + %25 = hlfir.elemental %24 typeparams %c8 unordered : (!fir.shape<1>, index) -> !hlfir.expr<?x!fir.char<1, 8>> { |
| 9 | + ^bb0(%arg0: index): |
| 10 | + %dummy = fir.string_lit "A"(8) : !fir.char<1, 8> |
| 11 | + hlfir.yield_element %dummy : !fir.char<1, 8> |
| 12 | + } |
| 13 | + %26 = hlfir.maxval %25 {fastmath = #arith.fastmath<contract>} : (!hlfir.expr<?x!fir.char<1, 8>>) -> !hlfir.expr<!fir.char<1, 8>> |
| 14 | + hlfir.assign %26 to %1 : !hlfir.expr<!fir.char<1, 8>>, !fir.ref<!fir.char<1, 8>> // Assign to %1 directly |
| 15 | + hlfir.destroy %26 : !hlfir.expr<!fir.char<1, 8>> |
| 16 | + hlfir.destroy %25 : !hlfir.expr<?x!fir.char<1, 8>> |
| 17 | + return |
| 18 | +} |
| 19 | + |
| 20 | +// CHECK-LABEL: func.func @_QQmain() { |
| 21 | +// CHECK-NEXT: %c8 = arith.constant 8 : index |
| 22 | +// CHECK-NEXT: %[[V0:.*]] = fir.alloca !fir.char<1,8> |
| 23 | +// CHECK-NEXT: %[[V1:.*]] = fir.shape %c8 : (index) -> !fir.shape<1> |
| 24 | +// CHECK-NEXT: %[[V2:.*]] = hlfir.elemental %1 typeparams %c8 unordered : (!fir.shape<1>, index) -> !hlfir.expr<?x!fir.char<1,8>> { |
| 25 | +// CHECK-NEXT: ^bb0(%arg0: index): |
| 26 | +// CHECK-NEXT: %[[V4:.*]] = fir.string_lit "A"(8) : !fir.char<1,8> |
| 27 | +// CHECK-NEXT: hlfir.yield_element %[[V4]] : !fir.char<1,8> |
| 28 | +// CHECK-NEXT: } |
| 29 | +// CHECK-NEXT: %[[V3:.*]] = hlfir.maxval %[[V2]] {fastmath = #arith.fastmath<contract>} : (!hlfir.expr<?x!fir.char<1,8>>) -> !hlfir.expr<!fir.char<1,8>> |
| 30 | +// CHECK-NEXT: hlfir.assign %[[V3]] to %[[V0]] : !hlfir.expr<!fir.char<1,8>>, !fir.ref<!fir.char<1,8>> |
| 31 | +// CHECK-NEXT: hlfir.destroy %[[V3]] : !hlfir.expr<!fir.char<1,8>> |
| 32 | +// CHECK-NEXT: hlfir.destroy %[[V2]] : !hlfir.expr<?x!fir.char<1,8>> |
| 33 | +// CHECK-NEXT: return |
| 34 | +// CHECK-NEXT: } |
0 commit comments