dsymutil: Fix the condition to distinguish module imports form definitions.

llvm-svn: 248512
This commit is contained in:
Adrian Prantl 2015-09-24 16:10:14 +00:00
parent 835e6633ab
commit f3e634b8fb
4 changed files with 41 additions and 1 deletions

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,40 @@
/* Compile with:
cat >modules.modulemap <<EOF
module Parent {
module Child {
header "Child.h"
}
}
EOF
clang -D CHILD_H -E -o Child.h submodules.m
clang -cc1 -emit-obj -fmodules -fmodule-map-file=modules.modulemap \
-fmodule-format=obj -g -dwarf-ext-refs -fmodules-cache-path=. \
-fdisable-module-hash submodules.m -o 1.o
*/
// RUN: llvm-dsymutil -f -oso-prepend-path=%p/../Inputs/submodules \
// RUN: -y %p/dummy-debug-map.map -o - \
// RUN: | llvm-dwarfdump --debug-dump=info - | FileCheck %s
// ---------------------------------------------------------------------
#ifdef CHILD_H
// ---------------------------------------------------------------------
// CHECK: DW_TAG_compile_unit
// CHECK-NOT: DW_TAG
// CHECK: DW_TAG_module
// CHECK-NEXT: DW_AT_name{{.*}}"Parent"
// CHECK: DW_TAG_module
// CHECK-NEXT: DW_AT_name{{.*}}"Child"
// CHECK: DW_TAG_structure_type
// CHECK-NOT: DW_TAG
// CHECK: DW_AT_name {{.*}}"PruneMeNot"
struct PruneMeNot;
// ---------------------------------------------------------------------
#else
// ---------------------------------------------------------------------
@import Parent.Child;
int main(int argc, char **argv) { return 0; }
#endif

View File

@ -1780,7 +1780,7 @@ static bool analyzeContextInfo(const DWARFDebugInfoEntryMinimal *DIE,
// definitions match)." // definitions match)."
// //
// We treat non-C++ modules like namespaces for this reason. // We treat non-C++ modules like namespaces for this reason.
if (DIE->getTag() == dwarf::DW_TAG_module && if (DIE->getTag() == dwarf::DW_TAG_module && ParentIdx == 0 &&
DIE->getAttributeValueAsString(&CU.getOrigUnit(), dwarf::DW_AT_name, DIE->getAttributeValueAsString(&CU.getOrigUnit(), dwarf::DW_AT_name,
"") != CU.getClangModuleName()) { "") != CU.getClangModuleName()) {
InImportedModule = true; InImportedModule = true;