
Before this patch, clang would emit a (module-)forward declaration for template instantiations that are not anchored by an explicit template instantiation, but still are guaranteed to be available in an imported module. Unfortunately detecting the owning module doesn't reliably work when local submodule visibility is enabled and the template is inside a cross-module namespace. This make clang debuggable again with -gmodules and LSV enabled. rdar://problem/41552377 llvm-svn: 345109
40 lines
1.3 KiB
C++
Executable File
40 lines
1.3 KiB
C++
Executable File
// Test C++ -gmodules debug info in the PCMs with local submodule visibility.
|
|
// REQUIRES: asserts
|
|
// RUN: rm -rf %t
|
|
// RUN: %clang_cc1 -triple %itanium_abi_triple \
|
|
// RUN: -fmodules-local-submodule-visibility %s \
|
|
// RUN: -dwarf-ext-refs -fmodule-format=obj -debug-info-kind=standalone \
|
|
// RUN: -dwarf-version=4 -fmodules -fimplicit-module-maps \
|
|
// RUN: -fmodules-cache-path="%t" -o %t.ll -I%S/Inputs/lsv-debuginfo \
|
|
// RUN: -mllvm -debug-only=pchcontainer &>%t-mod.ll
|
|
// RUN: cat %t-mod.ll | FileCheck %s
|
|
|
|
// RUN: rm -rf %t
|
|
// RUN: %clang_cc1 -triple %itanium_abi_triple \
|
|
// RUN: -fmodules-local-submodule-visibility %s \
|
|
// RUN: -dwarf-ext-refs -fmodule-format=obj -debug-info-kind=standalone \
|
|
// RUN: -dwarf-version=4 -fmodules -fimplicit-module-maps \
|
|
// RUN: -fmodules-cache-path="%t" -o %t.ll -I%S/Inputs/lsv-debuginfo \
|
|
// RUN: -mllvm -debug-only=pchcontainer &>%t-mod.ll \
|
|
// RUN: -DWITH_NAMESPACE
|
|
// RUN: cat %t-mod.ll | FileCheck %s
|
|
|
|
// ADT
|
|
// CHECK: @__clang_ast =
|
|
|
|
// B
|
|
// CHECK: @__clang_ast =
|
|
|
|
// This type isn't anchored anywhere, expect a full definition.
|
|
// CHECK: !DICompositeType({{.*}}, name: "AlignedCharArray<4, 16>",
|
|
// CHECK-SAME: elements:
|
|
|
|
// C
|
|
// CHECK: @__clang_ast =
|
|
|
|
// Here, too.
|
|
// CHECK: !DICompositeType({{.*}}, name: "AlignedCharArray<4, 16>",
|
|
// CHECK-SAME: elements:
|
|
|
|
#include <B/B.h>
|