53 lines · plain
1/* Compile with:2 cat >modules.modulemap <<EOF3 module Parent {4 module Child {5 header "Child.h"6 }7 module Empty {8 header "Empty.h"9 }10 }11EOF12 clang -D CHILD_H -E -o Child.h submodules.m13 touch empty.h14 clang -cc1 -emit-obj -fmodules -fmodule-map-file=modules.modulemap \15 -fmodule-format=obj -g -dwarf-ext-refs -fmodules-cache-path=. \16 -fdisable-module-hash submodules.m -o 1.o17*/18 19// RUN: dsymutil -f -oso-prepend-path=%p/../Inputs/submodules \20// RUN: -y %p/dummy-debug-map.map -o - \21// RUN: | llvm-dwarfdump -v --debug-info - | FileCheck %s22 23// ---------------------------------------------------------------------24#ifdef CHILD_H25// ---------------------------------------------------------------------26 27// CHECK: DW_TAG_compile_unit28// CHECK-NOT: DW_TAG29// CHECK: DW_TAG_module30// CHECK-NEXT: DW_AT_name{{.*}}"Parent"31// CHECK: DW_TAG_module32// CHECK-NEXT: DW_AT_name{{.*}}"Child"33// CHECK: DW_TAG_structure_type34// CHECK-NOT: DW_TAG35// CHECK: DW_AT_name {{.*}}"PruneMeNot"36struct PruneMeNot;37 38// ---------------------------------------------------------------------39#else40// ---------------------------------------------------------------------41 42// CHECK: DW_TAG_compile_unit43// CHECK: DW_TAG_module44// CHECK-NEXT: DW_AT_name{{.*}}"Parent"45// CHECK: 0x0[[EMPTY:.*]]: DW_TAG_module46// CHECK-NEXT: DW_AT_name{{.*}}"Empty"47 48// CHECK: DW_AT_import {{.*}}0x{{0*}}[[EMPTY]]49@import Parent.Child;50@import Parent.Empty;51int main(int argc, char **argv) { return 0; }52#endif53