Skip to content

Commit 386cf40

Browse files
committed
add dynamic optional back test
1 parent e801c74 commit 386cf40

File tree

1 file changed

+31
-0
lines changed

1 file changed

+31
-0
lines changed

flang/test/Lower/Intrinsics/split.f90

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,3 +41,34 @@ subroutine split_test2(s1, s2, p)
4141
! CHECK: return
4242
call split(s1, s2, p, .true.)
4343
end subroutine split_test2
44+
45+
! CHECK-LABEL: func @_QPsplit_test3(
46+
! CHECK-SAME: %[[s1:[^:]+]]: !fir.boxchar<1>{{.*}}, %[[s2:[^:]+]]: !fir.boxchar<1>{{.*}}, %[[p:[^:]+]]: !fir.ref<i32>{{.*}}, %[[back:[^:]+]]: !fir.ref<!fir.logical<4>>{{.*}})
47+
subroutine split_test3(s1, s2, p, back)
48+
character(*) :: s1, s2
49+
integer :: p
50+
logical, optional :: back
51+
! CHECK: %[[c1:.*]]:2 = fir.unboxchar %arg0 : (!fir.boxchar<1>) -> (!fir.ref<!fir.char<1,?>>, index)
52+
! CHECK: %[[c2:.*]]:2 = fir.unboxchar %arg1 : (!fir.boxchar<1>) -> (!fir.ref<!fir.char<1,?>>, index)
53+
! CHECK: %[[is_present:.*]] = fir.is_present %arg3 : (!fir.ref<!fir.logical<4>>) -> i1
54+
! CHECK: %[[back_unwrap:.*]] = fir.if %[[is_present]] -> (!fir.logical<4>) {
55+
! CHECK: {{.*}} = fir.load %arg3 : !fir.ref<!fir.logical<4>>
56+
! CHECK: fir.result {{.*}} : !fir.logical<4>
57+
! CHECK: } else {
58+
! CHECK: %false = arith.constant false
59+
! CHECK: {{.*}} = fir.convert %false : (i1) -> !fir.logical<4>
60+
! CHECK: fir.result {{.*}} : !fir.logical<4>
61+
! CHECK: }
62+
! CHECK: %[[pos:.*]] = fir.load %arg2 : !fir.ref<i32>
63+
! CHECK: %[[c1base:.*]] = fir.convert %[[c1]]#0 : (!fir.ref<!fir.char<1,?>>) -> !fir.ref<i8>
64+
! CHECK: %[[c1len:.*]] = fir.convert %[[c1]]#1 : (index) -> i64
65+
! CHECK: %[[c2base:.*]] = fir.convert %[[c2]]#0 : (!fir.ref<!fir.char<1,?>>) -> !fir.ref<i8>
66+
! CHECK: %[[c2len:.*]] = fir.convert %[[c2]]#1 : (index) -> i64
67+
! CHECK: %[[pos1:.*]] = fir.convert %[[pos]] : (i32) -> i64
68+
! CHECK: %[[back_convert:.*]] = fir.convert %[[back_unwrap]] : (!fir.logical<4>) -> i1
69+
! CHECK: %[[pos2:.*]] = fir.call @_FortranASplit1(%[[c1base]], %[[c1len]], %[[c2base]], %[[c2len]], %[[pos1]], %[[back_convert]], {{.*}}) {{.*}}: (!fir.ref<i8>, i64, !fir.ref<i8>, i64, i64, i1, !fir.ref<i8>, i32) -> i64
70+
! CHECK: %[[pos3:.*]] = fir.convert %[[pos2]] : (i64) -> i32
71+
! CHECK: fir.store %[[pos3]] to %[[p]] : !fir.ref<i32>
72+
! CHECK: return
73+
call split(s1, s2, p, back)
74+
end subroutine split_test3

0 commit comments

Comments
 (0)