diff options
| author | Frederic Riss <friss@apple.com> | 2015-08-23 02:38:29 +0000 |
|---|---|---|
| committer | Frederic Riss <friss@apple.com> | 2015-08-23 02:38:29 +0000 |
| commit | f8bcc0c61035bbb185cfdfa9f1c23e46e5cdd653 (patch) | |
| tree | 8fa3c6aff73752a234becc3e2bed229d4e6df04a /llvm/test/tools/dsymutil/X86/odr-anon-namespace.cpp | |
| parent | 24e817d22383879994baa0a8ac61624f282f8f75 (diff) | |
| download | bcm5719-llvm-f8bcc0c61035bbb185cfdfa9f1c23e46e5cdd653.tar.gz bcm5719-llvm-f8bcc0c61035bbb185cfdfa9f1c23e46e5cdd653.zip | |
[dsymutil] Refactor ODR uniquing tests to be more readable.
This patch adds all the refactored tests in new files, the old
tests will be removed by a followup commit.
Thanks to D. Blaikie for all the feedback.
llvm-svn: 245803
Diffstat (limited to 'llvm/test/tools/dsymutil/X86/odr-anon-namespace.cpp')
| -rw-r--r-- | llvm/test/tools/dsymutil/X86/odr-anon-namespace.cpp | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/llvm/test/tools/dsymutil/X86/odr-anon-namespace.cpp b/llvm/test/tools/dsymutil/X86/odr-anon-namespace.cpp new file mode 100644 index 00000000000..a66fc830b67 --- /dev/null +++ b/llvm/test/tools/dsymutil/X86/odr-anon-namespace.cpp @@ -0,0 +1,65 @@ +/* Compile with: + for FILE in `seq 2`; do + clang -g -c odr-anon-namespace.cpp -DFILE$FILE -o odr-anon-namespace/$FILE.o + done + */ + +// RUN: llvm-dsymutil -f -oso-prepend-path=%p/../Inputs/odr-anon-namespace -y %p/dummy-debug-map.map -o - | llvm-dwarfdump -debug-dump=info - | FileCheck %s + +#ifdef FILE1 +// Currently llvm-dsymutil will unique the contents of anonymous +// namespaces if they are from the same file/line. Force this +// namespace to appear different eventhough it's the same (this +// uniquing is actually a bug kept for backward compatibility, see the +// comments in DeclContextTree::getChildDeclContext()). +#line 42 +#endif +namespace { +class C {}; +} + +void foo() { + C c; +} + +// Keep the ifdef guards for FILE1 and FILE2 even if all the code is +// above to clearly show what the CHECK lines are testing. +#ifdef FILE1 + +// CHECK: TAG_compile_unit +// CHECK-NOT: DW_TAG +// CHECK: AT_name{{.*}}"odr-anon-namespace.cpp" + +// CHECK: DW_TAG_variable +// CHECK-NOT: DW_TAG +// CHECK: DW_AT_name {{.*}}"c" +// CHECK-NOT: DW_TAG +// CHECK: DW_AT_type {{.*}}0x00000000[[C_FILE1:[0-9a-f]*]] + +// CHECK: DW_TAG_namespace +// CHECK-NOT: {{DW_AT_name|NULL|DW_TAG}} +// CHECK: 0x[[C_FILE1]]:{{.*}}DW_TAG_class_type +// CHECK-NOT: DW_TAG +// CHECK: DW_AT_name{{.*}}"C" + +#elif defined(FILE2) + +// CHECK: TAG_compile_unit +// CHECK-NOT: DW_TAG +// CHECK: AT_name{{.*}}"odr-anon-namespace.cpp" + +// CHECK: DW_TAG_variable +// CHECK-NOT: DW_TAG +// CHECK: DW_AT_name {{.*}}"c" +// CHECK-NOT: DW_TAG +// CHECK: DW_AT_type {{.*}}0x00000000[[C_FILE2:[0-9a-f]*]] + +// CHECK: DW_TAG_namespace +// CHECK-NOT: {{DW_AT_name|NULL|DW_TAG}} +// CHECK: 0x[[C_FILE2]]:{{.*}}DW_TAG_class_type +// CHECK-NOT: DW_TAG +// CHECK: DW_AT_name{{.*}}"C" + +#else +#error "You must define which file you generate" +#endif |

