Skip to content

Commit 1ea399d

Browse files
Refine lowering tests
1 parent bdc3036 commit 1ea399d

File tree

1 file changed

+36
-16
lines changed

1 file changed

+36
-16
lines changed

flang/test/Lower/volatile3.f90

Lines changed: 36 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -27,16 +27,20 @@ program p
2727
call sub_volatile_array_pointer(nonvolatile_array_pointer)
2828
contains
2929
subroutine sub_nonvolatile_array(arr)
30-
integer, volatile :: arr(10)
30+
integer :: arr(10)
31+
arr(1) = 5
3132
end subroutine
3233
subroutine sub_volatile_array_assumed_shape(arr)
3334
integer, volatile, dimension(:) :: arr
35+
arr(1) = 5
3436
end subroutine
3537
subroutine sub_volatile_array(arr)
3638
integer, volatile, dimension(10) :: arr
39+
arr(1) = 5
3740
end subroutine
3841
subroutine sub_volatile_array_pointer(arr)
3942
integer, volatile, dimension(:), pointer :: arr
43+
arr(1) = 5
4044
end subroutine
4145
end program
4246

@@ -97,35 +101,51 @@ subroutine sub_volatile_array_pointer(arr)
97101

98102
! CHECK-LABEL: func.func private @_QFPsub_nonvolatile_array(
99103
! CHECK-SAME: %[[VAL_0:[0-9]+|[a-zA-Z$._-][a-zA-Z0-9$._-]*]]: !fir.ref<!fir.array<10xi32>> {fir.bindc_name = "arr"}) attributes {fir.host_symbol = @_QQmain, llvm.linkage = #llvm.linkage<internal>} {
100-
! CHECK: %[[VAL_1:.*]] = arith.constant 10 : index
101-
! CHECK: %[[VAL_2:.*]] = fir.dummy_scope : !fir.dscope
102-
! CHECK: %[[VAL_3:.*]] = fir.shape %[[VAL_1]] : (index) -> !fir.shape<1>
103-
! CHECK: %[[VAL_4:.*]] = fir.volatile_cast %[[VAL_0]] : (!fir.ref<!fir.array<10xi32>>) -> !fir.ref<!fir.array<10xi32>, volatile>
104-
! CHECK: %[[VAL_5:.*]]:2 = hlfir.declare %[[VAL_4]](%[[VAL_3]]) dummy_scope %[[VAL_2]] {fortran_attrs = #fir.var_attrs<volatile>, uniq_name = "_QFFsub_nonvolatile_arrayEarr"} : (!fir.ref<!fir.array<10xi32>, volatile>, !fir.shape<1>, !fir.dscope) -> (!fir.ref<!fir.array<10xi32>, volatile>, !fir.ref<!fir.array<10xi32>, volatile>)
104+
! CHECK: %[[VAL_1:.*]] = arith.constant 1 : index
105+
! CHECK: %[[VAL_2:.*]] = arith.constant 5 : i32
106+
! CHECK: %[[VAL_3:.*]] = arith.constant 10 : index
107+
! CHECK: %[[VAL_4:.*]] = fir.dummy_scope : !fir.dscope
108+
! CHECK: %[[VAL_5:.*]] = fir.shape %[[VAL_3]] : (index) -> !fir.shape<1>
109+
! CHECK: %[[VAL_6:.*]]:2 = hlfir.declare %[[VAL_0]](%[[VAL_5]]) dummy_scope %[[VAL_4]] {uniq_name = "_QFFsub_nonvolatile_arrayEarr"} : (!fir.ref<!fir.array<10xi32>>, !fir.shape<1>, !fir.dscope) -> (!fir.ref<!fir.array<10xi32>>, !fir.ref<!fir.array<10xi32>>)
110+
! CHECK: %[[VAL_7:.*]] = hlfir.designate %[[VAL_6]]#0 (%[[VAL_1]]) : (!fir.ref<!fir.array<10xi32>>, index) -> !fir.ref<i32>
111+
! CHECK: hlfir.assign %[[VAL_2]] to %[[VAL_7]] : i32, !fir.ref<i32>
105112
! CHECK: return
106113
! CHECK: }
107114

108115
! CHECK-LABEL: func.func private @_QFPsub_volatile_array_assumed_shape(
109116
! CHECK-SAME: %[[VAL_0:[0-9]+|[a-zA-Z$._-][a-zA-Z0-9$._-]*]]: !fir.box<!fir.array<?xi32>> {fir.bindc_name = "arr"}) attributes {fir.host_symbol = @_QQmain, llvm.linkage = #llvm.linkage<internal>} {
110-
! CHECK: %[[VAL_1:.*]] = fir.dummy_scope : !fir.dscope
111-
! CHECK: %[[VAL_2:.*]]:2 = hlfir.declare %[[VAL_0]] dummy_scope %[[VAL_1]] {fortran_attrs = #fir.var_attrs<volatile>, uniq_name = "_QFFsub_volatile_array_assumed_shapeEarr"} : (!fir.box<!fir.array<?xi32>>, !fir.dscope) -> (!fir.box<!fir.array<?xi32>>, !fir.box<!fir.array<?xi32>>)
117+
! CHECK: %[[VAL_1:.*]] = arith.constant 1 : index
118+
! CHECK: %[[VAL_2:.*]] = arith.constant 5 : i32
119+
! CHECK: %[[VAL_3:.*]] = fir.dummy_scope : !fir.dscope
120+
! CHECK: %[[VAL_4:.*]]:2 = hlfir.declare %[[VAL_0]] dummy_scope %[[VAL_3]] {fortran_attrs = #fir.var_attrs<volatile>, uniq_name = "_QFFsub_volatile_array_assumed_shapeEarr"} : (!fir.box<!fir.array<?xi32>>, !fir.dscope) -> (!fir.box<!fir.array<?xi32>>, !fir.box<!fir.array<?xi32>>)
121+
! CHECK: %[[VAL_5:.*]] = hlfir.designate %[[VAL_4]]#0 (%[[VAL_1]]) : (!fir.box<!fir.array<?xi32>>, index) -> !fir.ref<i32>
122+
! CHECK: hlfir.assign %[[VAL_2]] to %[[VAL_5]] : i32, !fir.ref<i32>
112123
! CHECK: return
113124
! CHECK: }
114125

115126
! CHECK-LABEL: func.func private @_QFPsub_volatile_array(
116127
! CHECK-SAME: %[[VAL_0:[0-9]+|[a-zA-Z$._-][a-zA-Z0-9$._-]*]]: !fir.ref<!fir.array<10xi32>> {fir.bindc_name = "arr"}) attributes {fir.host_symbol = @_QQmain, llvm.linkage = #llvm.linkage<internal>} {
117-
! CHECK: %[[VAL_1:.*]] = arith.constant 10 : index
118-
! CHECK: %[[VAL_2:.*]] = fir.dummy_scope : !fir.dscope
119-
! CHECK: %[[VAL_3:.*]] = fir.shape %[[VAL_1]] : (index) -> !fir.shape<1>
120-
! CHECK: %[[VAL_4:.*]] = fir.volatile_cast %[[VAL_0]] : (!fir.ref<!fir.array<10xi32>>) -> !fir.ref<!fir.array<10xi32>, volatile>
121-
! CHECK: %[[VAL_5:.*]]:2 = hlfir.declare %[[VAL_4]](%[[VAL_3]]) dummy_scope %[[VAL_2]] {fortran_attrs = #fir.var_attrs<volatile>, uniq_name = "_QFFsub_volatile_arrayEarr"} : (!fir.ref<!fir.array<10xi32>, volatile>, !fir.shape<1>, !fir.dscope) -> (!fir.ref<!fir.array<10xi32>, volatile>, !fir.ref<!fir.array<10xi32>, volatile>)
128+
! CHECK: %[[VAL_1:.*]] = arith.constant 1 : index
129+
! CHECK: %[[VAL_2:.*]] = arith.constant 5 : i32
130+
! CHECK: %[[VAL_3:.*]] = arith.constant 10 : index
131+
! CHECK: %[[VAL_4:.*]] = fir.dummy_scope : !fir.dscope
132+
! CHECK: %[[VAL_5:.*]] = fir.shape %[[VAL_3]] : (index) -> !fir.shape<1>
133+
! CHECK: %[[VAL_6:.*]] = fir.volatile_cast %[[VAL_0]] : (!fir.ref<!fir.array<10xi32>>) -> !fir.ref<!fir.array<10xi32>, volatile>
134+
! CHECK: %[[VAL_7:.*]]:2 = hlfir.declare %[[VAL_6]](%[[VAL_5]]) dummy_scope %[[VAL_4]] {fortran_attrs = #fir.var_attrs<volatile>, uniq_name = "_QFFsub_volatile_arrayEarr"} : (!fir.ref<!fir.array<10xi32>, volatile>, !fir.shape<1>, !fir.dscope) -> (!fir.ref<!fir.array<10xi32>, volatile>, !fir.ref<!fir.array<10xi32>, volatile>)
135+
! CHECK: %[[VAL_8:.*]] = hlfir.designate %[[VAL_7]]#0 (%[[VAL_1]]) : (!fir.ref<!fir.array<10xi32>, volatile>, index) -> !fir.ref<i32, volatile>
136+
! CHECK: hlfir.assign %[[VAL_2]] to %[[VAL_8]] : i32, !fir.ref<i32, volatile>
122137
! CHECK: return
123138
! CHECK: }
124139

125140
! CHECK-LABEL: func.func private @_QFPsub_volatile_array_pointer(
126141
! CHECK-SAME: %[[VAL_0:[0-9]+|[a-zA-Z$._-][a-zA-Z0-9$._-]*]]: !fir.ref<!fir.box<!fir.ptr<!fir.array<?xi32>>>, volatile> {fir.bindc_name = "arr"}) attributes {fir.host_symbol = @_QQmain, llvm.linkage = #llvm.linkage<internal>} {
127-
! CHECK: %[[VAL_1:.*]] = fir.dummy_scope : !fir.dscope
128-
! CHECK: %[[VAL_2:.*]] = fir.volatile_cast %[[VAL_0]] : (!fir.ref<!fir.box<!fir.ptr<!fir.array<?xi32>>>, volatile>) -> !fir.ref<!fir.box<!fir.ptr<!fir.array<?xi32>>, volatile>, volatile>
129-
! CHECK: %[[VAL_3:.*]]:2 = hlfir.declare %[[VAL_2]] dummy_scope %[[VAL_1]] {fortran_attrs = #fir.var_attrs<pointer, volatile>, uniq_name = "_QFFsub_volatile_array_pointerEarr"} : (!fir.ref<!fir.box<!fir.ptr<!fir.array<?xi32>>, volatile>, volatile>, !fir.dscope) -> (!fir.ref<!fir.box<!fir.ptr<!fir.array<?xi32>>, volatile>, volatile>, !fir.ref<!fir.box<!fir.ptr<!fir.array<?xi32>>, volatile>, volatile>)
142+
! CHECK: %[[VAL_1:.*]] = arith.constant 1 : index
143+
! CHECK: %[[VAL_2:.*]] = arith.constant 5 : i32
144+
! CHECK: %[[VAL_3:.*]] = fir.dummy_scope : !fir.dscope
145+
! CHECK: %[[VAL_4:.*]] = fir.volatile_cast %[[VAL_0]] : (!fir.ref<!fir.box<!fir.ptr<!fir.array<?xi32>>>, volatile>) -> !fir.ref<!fir.box<!fir.ptr<!fir.array<?xi32>>, volatile>, volatile>
146+
! CHECK: %[[VAL_5:.*]]:2 = hlfir.declare %[[VAL_4]] dummy_scope %[[VAL_3]] {fortran_attrs = #fir.var_attrs<pointer, volatile>, uniq_name = "_QFFsub_volatile_array_pointerEarr"} : (!fir.ref<!fir.box<!fir.ptr<!fir.array<?xi32>>, volatile>, volatile>, !fir.dscope) -> (!fir.ref<!fir.box<!fir.ptr<!fir.array<?xi32>>, volatile>, volatile>, !fir.ref<!fir.box<!fir.ptr<!fir.array<?xi32>>, volatile>, volatile>)
147+
! CHECK: %[[VAL_6:.*]] = fir.load %[[VAL_5]]#0 : !fir.ref<!fir.box<!fir.ptr<!fir.array<?xi32>>, volatile>, volatile>
148+
! CHECK: %[[VAL_7:.*]] = hlfir.designate %[[VAL_6]] (%[[VAL_1]]) : (!fir.box<!fir.ptr<!fir.array<?xi32>>, volatile>, index) -> !fir.ref<i32, volatile>
149+
! CHECK: hlfir.assign %[[VAL_2]] to %[[VAL_7]] : i32, !fir.ref<i32, volatile>
130150
! CHECK: return
131151
! CHECK: }

0 commit comments

Comments
 (0)