blob: 9eceb74320f972f89b64fc5456e288600d485afc [file]
! RUN: rm -rf %t && mkdir -p %t
! RUN: %flang_fc1 -emit-llvm -debug-info-kind=standalone -J%t %s -o - \
! RUN: | FileCheck %s
! Test the import chain of a nested submodule: it imports the submodule that
! contains it, which imports the module at the root.
module nested_shapes
implicit none
integer :: root_var = 1
interface
module subroutine go()
end subroutine
end interface
end module nested_shapes
submodule (nested_shapes) mid
integer :: mid_var = 2
end submodule mid
submodule (nested_shapes:mid) leaf
integer :: leaf_var = 3
contains
module subroutine go()
print *, root_var, mid_var, leaf_var
end subroutine go
end submodule leaf
! CHECK-DAG: ![[ROOT:[0-9]+]] = !DIModule(scope: ![[#]], name: "nested_shapes"
! CHECK-DAG: ![[MID:[0-9]+]] = !DIModule(scope: ![[#]], name: "nested_shapes.mid"
! CHECK-DAG: ![[LEAF:[0-9]+]] = !DIModule(scope: ![[#]], name: "nested_shapes.leaf"
! CHECK-DAG: !DIImportedEntity(tag: DW_TAG_imported_module, scope: ![[MID]], entity: ![[ROOT]]
! CHECK-DAG: !DIImportedEntity(tag: DW_TAG_imported_module, scope: ![[LEAF]], entity: ![[MID]]
! An entity stays in the submodule that declares it.
! CHECK-DAG: !DIGlobalVariable(name: "root_var", {{.*}}scope: ![[ROOT]],
! CHECK-DAG: !DIGlobalVariable(name: "mid_var", {{.*}}scope: ![[MID]],
! CHECK-DAG: !DIGlobalVariable(name: "leaf_var", {{.*}}scope: ![[LEAF]],
! CHECK-DAG: !DISubprogram(name: "go", {{.*}}scope: ![[LEAF]],