|
505 | 505 | ! CHECK: %[[V_302:[0-9]+]] = fir.call @_FortranAioBeginExternalListOutput
|
506 | 506 | print*, 'all[T]: ', v_all
|
507 | 507 |
|
| 508 | + call s1(ieee_overflow, x) |
| 509 | + |
508 | 510 | stop
|
509 | 511 | end
|
| 512 | + |
| 513 | +! CHECK-LABEL: c.func @_QPs1 |
| 514 | + |
| 515 | + subroutine s1(flag, x) |
| 516 | + use ieee_arithmetic, only: ieee_flag_type, ieee_support_flag |
| 517 | + ! CHECK: %[[V_1:[0-9]+]] = fir.declare %arg0 dummy_scope %{{.*}} {uniq_name = "_QFs1Eflag"} |
| 518 | + type(ieee_flag_type) :: flag |
| 519 | + real, intent(in) :: x(100,20,10) |
| 520 | + real :: y |
| 521 | + print* |
| 522 | + |
| 523 | + ! CHECK: %[[V_16:[0-9]+]] = fir.coordinate_of %[[V_1]], _QM__fortran_builtinsT__builtin_ieee_flag_type.flag |
| 524 | + ! CHECK: %[[V_17:[0-9]+]] = fir.load %[[V_16]] : !fir.ref<i8> |
| 525 | + ! CHECK: %[[V_18:[0-9]+]] = arith.andi %[[V_17]], %c61{{.*}} : i8 |
| 526 | + ! CHECK: %[[V_19:[0-9]+]] = arith.cmpi ne, %[[V_18]], %c0{{.*}} : i8 |
| 527 | + ! CHECK: %[[V_20:[0-9]+]] = fir.if %[[V_19]] -> (i1) { |
| 528 | + ! CHECK: fir.result %true{{[_0-9]*}} : i1 |
| 529 | + ! CHECK: } else { |
| 530 | + ! CHECK: fir.result %false{{[_0-9]*}} : i1 |
| 531 | + ! CHECK: } |
| 532 | + ! CHECK: %[[V_21:[0-9]+]] = fir.call @_FortranAioOutputLogical(%{{[0-9]+}}, %[[V_20]]) fastmath<contract> : (!fir.ref<i8>, i1) -> i1 |
| 533 | + ! CHECK: %[[V_22:[0-9]+]] = fir.load %[[V_16]] : !fir.ref<i8> |
| 534 | + ! CHECK: %[[V_23:[0-9]+]] = arith.andi %[[V_22]], %c61{{.*}} : i8 |
| 535 | + ! CHECK: %[[V_24:[0-9]+]] = arith.cmpi ne, %[[V_23]], %c0{{.*}} : i8 |
| 536 | + ! CHECK: %[[V_25:[0-9]+]] = fir.if %[[V_24]] -> (i1) { |
| 537 | + ! CHECK: fir.result %true{{[_0-9]*}} : i1 |
| 538 | + ! CHECK: } else { |
| 539 | + ! CHECK: %[[V_38:[0-9]+]] = arith.cmpi eq, %[[V_22]], %c2{{.*}} : i8 |
| 540 | + ! CHECK: %[[V_39:[0-9]+]] = fir.convert %[[V_22]] : (i8) -> i32 |
| 541 | + ! CHECK: %[[V_40:[0-9]+]] = fir.call @_FortranASupportHalting(%[[V_39]]) fastmath<contract> : (i32) -> i1 |
| 542 | + ! CHECK: %[[V_41:[0-9]+]] = arith.andi %[[V_38]], %[[V_40]] : i1 |
| 543 | + ! CHECK: fir.result %[[V_41]] : i1 |
| 544 | + ! CHECK: } |
| 545 | + ! CHECK: %[[V_26:[0-9]+]] = fir.call @_FortranAioOutputLogical(%{{[0-9]+}}, %[[V_25]]) fastmath<contract> : (!fir.ref<i8>, i1) -> i1 |
| 546 | + ! CHECK: %[[V_27:[0-9]+]] = fir.load %[[V_16]] : !fir.ref<i8> |
| 547 | + ! CHECK: %[[V_28:[0-9]+]] = arith.andi %[[V_27]], %c61{{.*}} : i8 |
| 548 | + ! CHECK: %[[V_29:[0-9]+]] = arith.cmpi ne, %[[V_28]], %c0{{.*}} : i8 |
| 549 | + ! CHECK: %[[V_30:[0-9]+]] = fir.if %[[V_29]] -> (i1) { |
| 550 | + ! CHECK: fir.result %true{{[_0-9]*}} : i1 |
| 551 | + ! CHECK: } else { |
| 552 | + ! CHECK: %[[V_38:[0-9]+]] = arith.cmpi eq, %[[V_27]], %c2{{.*}} : i8 |
| 553 | + ! CHECK: %[[V_39:[0-9]+]] = fir.convert %[[V_27]] : (i8) -> i32 |
| 554 | + ! CHECK: %[[V_40:[0-9]+]] = fir.call @_FortranASupportHalting(%[[V_39]]) fastmath<contract> : (i32) -> i1 |
| 555 | + ! CHECK: %[[V_41:[0-9]+]] = arith.andi %[[V_38]], %[[V_40]] : i1 |
| 556 | + ! CHECK: fir.result %[[V_41]] : i1 |
| 557 | + ! CHECK: } |
| 558 | + ! CHECK: %[[V_31:[0-9]+]] = fir.call @_FortranAioOutputLogical(%{{[0-9]+}}, %[[V_30]]) fastmath<contract> : (!fir.ref<i8>, i1) -> i1 |
| 559 | + ! CHECK: %[[V_32:[0-9]+]] = fir.load %[[V_16]] : !fir.ref<i8> |
| 560 | + ! CHECK: %[[V_33:[0-9]+]] = arith.andi %[[V_32]], %c61{{.*}} : i8 |
| 561 | + ! CHECK: %[[V_34:[0-9]+]] = arith.cmpi ne, %[[V_33]], %c0{{.*}} : i8 |
| 562 | + ! CHECK: %[[V_35:[0-9]+]] = fir.if %[[V_34]] -> (i1) { |
| 563 | + ! CHECK: fir.result %true{{[_0-9]*}} : i1 |
| 564 | + ! CHECK: } else { |
| 565 | + ! CHECK: %[[V_38:[0-9]+]] = arith.cmpi eq, %[[V_32]], %c2{{.*}} : i8 |
| 566 | + ! CHECK: %[[V_39:[0-9]+]] = fir.convert %[[V_32]] : (i8) -> i32 |
| 567 | + ! CHECK: %[[V_40:[0-9]+]] = fir.call @_FortranASupportHalting(%[[V_39]]) fastmath<contract> : (i32) -> i1 |
| 568 | + ! CHECK: %[[V_41:[0-9]+]] = arith.andi %[[V_38]], %[[V_40]] : i1 |
| 569 | + ! CHECK: fir.result %[[V_41]] : i1 |
| 570 | + ! CHECK: } |
| 571 | + ! CHECK: %[[V_36:[0-9]+]] = fir.call @_FortranAioOutputLogical(%{{[0-9]+}}, %[[V_35]]) fastmath<contract> : (!fir.ref<i8>, i1) -> i1 |
| 572 | + print*, '[T T T T]:', ieee_support_flag(flag), ieee_support_flag(flag, x), ieee_support_flag(flag, x(3:7,13,4:9)), ieee_support_flag(flag, y) |
| 573 | + end |
0 commit comments