[flang-commits] [flang] dd3e542 - [flang][NFC] Add namelist lowering test

Valentin Clement via flang-commits flang-commits at lists.llvm.org
Wed Mar 23 08:52:52 PDT 2022


Author: Valentin Clement
Date: 2022-03-23T16:52:44+01:00
New Revision: dd3e54213cb6f4227654488951b3f9d6b9269e36

URL: https://github.com/llvm/llvm-project/commit/dd3e54213cb6f4227654488951b3f9d6b9269e36
DIFF: https://github.com/llvm/llvm-project/commit/dd3e54213cb6f4227654488951b3f9d6b9269e36.diff

LOG: [flang][NFC] Add namelist lowering test

This patch adds a lowering test for the namelist.

This patch is part of the upstreaming effort from fir-dev branch.

Reviewed By: PeteSteinfeld

Differential Revision: https://reviews.llvm.org/D122318

Co-authored-by: Jean Perier <jperier at nvidia.com>
Co-authored-by: Peter Steinfeld <psteinfeld at nvidia.com>
Co-authored-by: V Donaldson <vdonaldson at nvidia.com>

Added: 
    flang/test/Lower/namelist.f90

Modified: 
    

Removed: 
    


################################################################################
diff  --git a/flang/test/Lower/namelist.f90 b/flang/test/Lower/namelist.f90
new file mode 100644
index 0000000000000..576779086d15f
--- /dev/null
+++ b/flang/test/Lower/namelist.f90
@@ -0,0 +1,89 @@
+! RUN: bbc -emit-fir -o - %s | FileCheck %s
+
+! CHECK-LABEL: func @_QQmain
+program p
+  ! CHECK-DAG: [[ccc:%[0-9]+]] = fir.address_of(@_QFEccc) : !fir.ref<!fir.array<4x!fir.char<1,3>>>
+  ! CHECK-DAG: [[jjj:%[0-9]+]] = fir.alloca i32 {bindc_name = "jjj", uniq_name = "_QFEjjj"}
+  character*3 ccc(4)
+  namelist /nnn/ jjj, ccc
+  jjj = 17
+  ccc = ["aa ", "bb ", "cc ", "dd "]
+  ! CHECK: [[cookie:%[0-9]+]] = fir.call @_FortranAioBeginExternalListOutput
+  ! CHECK: fir.alloca !fir.array<2xtuple<!fir.ref<i8>, !fir.ref<!fir.box<none>>>>
+  ! CHECK: fir.undefined
+  ! CHECK: fir.address_of
+  ! CHECK: fir.insert_value
+  ! CHECK: fir.embox [[jjj]]
+  ! CHECK: fir.insert_value
+  ! CHECK: fir.address_of
+  ! CHECK: fir.insert_value
+  ! CHECK: fir.address_of(@_QFEccc.desc) : !fir.ref<!fir.box<!fir.ptr<!fir.array<4x!fir.char<1,3>>>>>
+  ! CHECK: fir.insert_value
+  ! CHECK: fir.alloca tuple<!fir.ref<i8>, i64, !fir.ref<!fir.array<2xtuple<!fir.ref<i8>, !fir.ref<!fir.box<none>>>>>>
+  ! CHECK: fir.address_of
+  ! CHECK-COUNT-3: fir.insert_value
+  ! CHECK: fir.call @_FortranAioOutputNamelist([[cookie]]
+  ! CHECK: fir.call @_FortranAioEndIoStatement([[cookie]]
+  write(*, nnn)
+  jjj = 27
+  ! CHECK: fir.coordinate_of
+  ccc(4) = "zz "
+  ! CHECK: [[cookie:%[0-9]+]] = fir.call @_FortranAioBeginExternalListOutput
+  ! CHECK: fir.alloca !fir.array<2xtuple<!fir.ref<i8>, !fir.ref<!fir.box<none>>>>
+  ! CHECK: fir.undefined
+  ! CHECK: fir.address_of
+  ! CHECK: fir.insert_value
+  ! CHECK: fir.embox [[jjj]]
+  ! CHECK: fir.insert_value
+  ! CHECK: fir.address_of
+  ! CHECK: fir.insert_value
+  ! CHECK: fir.address_of(@_QFEccc.desc) : !fir.ref<!fir.box<!fir.ptr<!fir.array<4x!fir.char<1,3>>>>>
+  ! CHECK: fir.insert_value
+  ! CHECK: fir.alloca tuple<!fir.ref<i8>, i64, !fir.ref<!fir.array<2xtuple<!fir.ref<i8>, !fir.ref<!fir.box<none>>>>>>
+  ! CHECK: fir.address_of
+  ! CHECK-COUNT-3: fir.insert_value
+  ! CHECK: fir.call @_FortranAioOutputNamelist([[cookie]]
+  ! CHECK: fir.call @_FortranAioEndIoStatement([[cookie]]
+  write(*, nnn)
+end
+
+! CHECK-LABEL: sss
+subroutine sss
+  integer xxx(11:13)
+  namelist /rrr/ xxx
+  ! CHECK: [[xxx:%[0-9]+]] = fir.alloca {{.*}} = "xxx"
+  ! CHECK: [[cookie:%[0-9]+]] = fir.call @_FortranAioBeginExternalListInput
+  ! CHECK: alloca
+  ! CHECK: undefined
+  ! CHECK: fir.address_of{{.*}}787878
+  ! CHECK: fir.insert_value
+  ! CHECK: fir.shape_shift %c11
+  ! CHECK: fir.embox [[xxx]]
+  ! CHECK: fir.insert_value
+  ! CHECK: fir.alloca
+  ! CHECK: fir.undefined
+  ! CHECK: fir.address_of{{.*}}727272
+  ! CHECK-COUNT-3: fir.insert_value
+  ! CHECK: fir.call @_FortranAioInputNamelist([[cookie]]
+  ! CHECK: fir.call @_FortranAioEndIoStatement([[cookie]]
+  read(*, rrr)
+end
+
+! CHECK-LABEL: global_pointer
+subroutine global_pointer
+  real,pointer,save::ptrarray(:)
+  ! CHECK: %[[a0:.*]] = fir.address_of
+  namelist/mygroup/ptrarray
+  ! CHECK: %[[a1:.*]] = fir.convert %[[a0]]
+  ! CHECK: %[[a2:.*]] = fir.call @_FortranAioBeginExternalListOutput({{.*}}, %[[a1]], {{.*}}) : (i32, !fir.ref<i8>, i32) -> !fir.ref<i8>
+  ! CHECK: %[[a3:.*]] = fir.address_of
+  ! CHECK: %[[a4:.*]] = fir.convert %[[a3]]
+  ! CHECK: %[[a5:.*]] = fir.call @_FortranAioOutputNamelist(%[[a2]], %[[a4]])
+  ! CHECK: %[[a6:.*]] = fir.call @_FortranAioEndIoStatement(%[[a2]])
+  write(10, nml=mygroup)
+end
+
+  ! CHECK-DAG: fir.global linkonce @_QQcl.6A6A6A00 constant : !fir.char<1,4>
+  ! CHECK-DAG: fir.global linkonce @_QQcl.63636300 constant : !fir.char<1,4>
+  ! CHECK-DAG: fir.global linkonce @_QQcl.6E6E6E00 constant : !fir.char<1,4>
+  ! CHECK-DAG: fir.global linkonce @_QFEccc.desc constant : !fir.box<!fir.ptr<!fir.array<4x!fir.char<1,3>>>>


        


More information about the flang-commits mailing list