diff options
Diffstat (limited to 'llvm/test/tools/dsymutil/X86/modules-pruning.cpp')
| -rw-r--r-- | llvm/test/tools/dsymutil/X86/modules-pruning.cpp | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/llvm/test/tools/dsymutil/X86/modules-pruning.cpp b/llvm/test/tools/dsymutil/X86/modules-pruning.cpp new file mode 100644 index 00000000000..7f331f183f0 --- /dev/null +++ b/llvm/test/tools/dsymutil/X86/modules-pruning.cpp @@ -0,0 +1,59 @@ +// RUN: dsymutil -f -oso-prepend-path=%p/../Inputs/modules-pruning \ +// RUN: -y %p/dummy-debug-map.map -o - \ +// RUN: | llvm-dwarfdump --name isRef -p - | FileCheck %s + +/* Compile with: + cat >modules.modulemap <<EOF + module Outer { + module Template { + header "template.h" + export * + } + } +EOF + clang++ -D TEMPLATE_H -E -o template.h modules-pruning.cpp + clang++ -c -fcxx-modules -fmodules -fmodule-map-file=modules.modulemap \ + -g -gmodules -fmodules-cache-path=. \ + -Xclang -fdisable-module-hash modules-pruning.cpp -o 1.o +*/ + +// CHECK: DW_TAG_compile_unit +// CHECK: DW_TAG_module +// CHECK: DW_TAG_module +// CHECK: DW_TAG_class +// CHECK: DW_TAG_member +// CHECK: DW_AT_name ("isRef") +// CHECK: DW_AT_declaration (true) +// CHECK: DW_AT_const_value (1) +// CHECK-NOT: DW_TAG + +#ifdef TEMPLATE_H + +namespace M { +struct false_type { + static const bool value = false; +}; +struct true_type { + static const bool value = true; +}; + +template <class T> struct is_reference : false_type {}; +template <class T> struct is_reference<T&> : true_type {}; + +template<class T> +class Template { +public: + static const bool isRef = is_reference<T>::value; + Template() {} +}; +} +#else + +#include "template.h" + +void foo() { + M::Template<bool&> TB1; + TB1.isRef; +} + +#endif |

