summaryrefslogtreecommitdiffstats
path: root/llvm/test/tools/dsymutil/X86/odr-anon-namespace.cpp
diff options
context:
space:
mode:
authorFrederic Riss <friss@apple.com>2015-08-23 02:38:29 +0000
committerFrederic Riss <friss@apple.com>2015-08-23 02:38:29 +0000
commitf8bcc0c61035bbb185cfdfa9f1c23e46e5cdd653 (patch)
tree8fa3c6aff73752a234becc3e2bed229d4e6df04a /llvm/test/tools/dsymutil/X86/odr-anon-namespace.cpp
parent24e817d22383879994baa0a8ac61624f282f8f75 (diff)
downloadbcm5719-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.cpp65
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
OpenPOWER on IntegriCloud