llvm-capstone/clang/test/Modules/DebugInfoNamespace.cpp
Adrian Prantl d88705587f Module Debug Info: Emit namespaced C++ forward decls in the correct module.
The AST merges NamespaceDecls, but for module debug info it is
important to put a namespace decl (or rather its children) into the
correct (sub-)module, so we need to use the parent module of the decl
that triggered this namespace to be serialized as a second key when
looking up DINamespace nodes.

rdar://problem/29339538

llvm-svn: 302840
2017-05-11 22:59:19 +00:00

20 lines
701 B
C++

// RUN: rm -rf %t
// RUN: %clang_cc1 -x objective-c++ -std=c++11 -debug-info-kind=standalone \
// RUN: -dwarf-ext-refs -fmodules \
// RUN: -fmodule-format=obj -fimplicit-module-maps \
// RUN: -triple %itanium_abi_triple -fmodules-cache-path=%t \
// RUN: %s -I %S/Inputs/DebugInfoNamespace -I %t -emit-llvm -o - \
// RUN: | FileCheck %s
#include "A.h"
#include "B.h"
using namespace N;
B b;
// Verify that the forward decl of B is in module B.
//
// CHECK: !DICompositeType(tag: DW_TAG_structure_type, name: "B",
// CHECK-SAME: scope: ![[N:[0-9]+]]
// CHECK: ![[N]] = !DINamespace(name: "N", scope: ![[B:[0-9]+]])
// CHECK: ![[B]] = !DIModule(scope: null, name: "B",