summaryrefslogtreecommitdiffstats
path: root/test/CodeGenCXX/debug-info-artificial-arg.cpp
diff options
context:
space:
mode:
authorEric Christopher <echristo@apple.com>2012-02-09 07:26:21 +0000
committerEric Christopher <echristo@apple.com>2012-02-09 07:26:21 +0000
commit3b8e197bbfd2c9a1a5fc3ab6509f89cc274e77f8 (patch)
treecfdf5ed519ada2b94a767d7aa8b5b4f70460f2b7 /test/CodeGenCXX/debug-info-artificial-arg.cpp
parentf8c17b79ab55d633567a151da5eb596b6001fa30 (diff)
Don't cache the artificial type for the this pointer, there's no
difference in the qual type. This is a workaround for the fact that the type isn't artificial but the this decl is, however, we don't have any way of representing it in the current metadata. For now, however, just don't cache the full type. Fixes rdar://10831526 and probably a couple of others. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150159 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/CodeGenCXX/debug-info-artificial-arg.cpp')
-rw-r--r--test/CodeGenCXX/debug-info-artificial-arg.cpp29
1 files changed, 29 insertions, 0 deletions
diff --git a/test/CodeGenCXX/debug-info-artificial-arg.cpp b/test/CodeGenCXX/debug-info-artificial-arg.cpp
new file mode 100644
index 0000000000..a8438453e9
--- /dev/null
+++ b/test/CodeGenCXX/debug-info-artificial-arg.cpp
@@ -0,0 +1,29 @@
+// RUN: %clang_cc1 -emit-llvm -g -triple x86_64-apple-darwin %s -o - | FileCheck %s
+
+template<class X> class B {
+public:
+ explicit B(X* p = 0);
+};
+
+class A
+{
+public:
+ A(int value) : m_a_value(value) {};
+ A(int value, A* client_A) : m_a_value (value), m_client_A (client_A) {}
+
+ virtual ~A() {}
+
+private:
+ int m_a_value;
+ B<A> m_client_A;
+};
+
+int main(int argc, char **argv) {
+ A reallyA (500);
+}
+
+// FIXME: The numbers are truly awful.
+// CHECK: !22 = metadata !{i32 786447, null, metadata !"", null, i32 0, i64 64, i64 64, i64 0, i32 0, metadata !5} ; [ DW_TAG_pointer_type ]
+// CHECK: metadata !5, metadata !"A", metadata !"A", metadata !"", metadata !6, i32 12, metadata !34, i1 false, i1 false, i32 0, i32 0, null, i32 256, i1 false, null, null, i32 0, metadata !36} ; [ DW_TAG_subprogram ]
+// CHECK: metadata !"", i32 0, i32 0, i64 0, i64 0, i64 0, i32 0, null, metadata !35, i32 0, i32 0} ; [ DW_TAG_subroutine_type ]
+// CHECK: !35 = metadata !{null, metadata !30, metadata !13, metadata !22}