diff options
Diffstat (limited to 'llvm/test')
| -rw-r--r-- | llvm/test/tools/dsymutil/Inputs/modules-pruning/1.o | bin | 0 -> 2984 bytes | |||
| -rw-r--r-- | llvm/test/tools/dsymutil/Inputs/modules-pruning/Outer.pcm | bin | 0 -> 20988 bytes | |||
| -rw-r--r-- | llvm/test/tools/dsymutil/X86/modules-pruning.cpp | 59 | 
3 files changed, 59 insertions, 0 deletions
| diff --git a/llvm/test/tools/dsymutil/Inputs/modules-pruning/1.o b/llvm/test/tools/dsymutil/Inputs/modules-pruning/1.oBinary files differ new file mode 100644 index 00000000000..89cb1b467ed --- /dev/null +++ b/llvm/test/tools/dsymutil/Inputs/modules-pruning/1.o diff --git a/llvm/test/tools/dsymutil/Inputs/modules-pruning/Outer.pcm b/llvm/test/tools/dsymutil/Inputs/modules-pruning/Outer.pcmBinary files differ new file mode 100644 index 00000000000..657a024a686 --- /dev/null +++ b/llvm/test/tools/dsymutil/Inputs/modules-pruning/Outer.pcm 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 | 

