summaryrefslogtreecommitdiffstats
path: root/clang/test/CodeGenCXX/globalinit-loc.cpp
diff options
context:
space:
mode:
authorAdrian Prantl <aprantl@apple.com>2014-04-10 23:21:53 +0000
committerAdrian Prantl <aprantl@apple.com>2014-04-10 23:21:53 +0000
commit42d71b990677afc974c404fb0482cb5af176c3d0 (patch)
tree6d64b36a9012e29d0d7df47de3f55f4ad3f70a12 /clang/test/CodeGenCXX/globalinit-loc.cpp
parentfb873af67ed23e6aa445b44d253fb156d07bdebc (diff)
downloadbcm5719-llvm-42d71b990677afc974c404fb0482cb5af176c3d0.tar.gz
bcm5719-llvm-42d71b990677afc974c404fb0482cb5af176c3d0.zip
Debug info: (Bugfix) Make sure artificial functions like _GLOBAL__I_a
are not associated with any source lines. Previously, if the Location of a Decl was empty, EmitFunctionStart would just keep using CurLoc, which would sometimes be correct (e.g., thunks) but in other cases would just point to a hilariously random location. This patch fixes this by completely eliminating all uses of CurLoc from EmitFunctionStart and rather have clients explicitly pass in a SourceLocation for the function header and the function body. rdar://problem/14985269 llvm-svn: 205999
Diffstat (limited to 'clang/test/CodeGenCXX/globalinit-loc.cpp')
-rw-r--r--clang/test/CodeGenCXX/globalinit-loc.cpp22
1 files changed, 22 insertions, 0 deletions
diff --git a/clang/test/CodeGenCXX/globalinit-loc.cpp b/clang/test/CodeGenCXX/globalinit-loc.cpp
new file mode 100644
index 00000000000..bf3340c1572
--- /dev/null
+++ b/clang/test/CodeGenCXX/globalinit-loc.cpp
@@ -0,0 +1,22 @@
+// RUN: %clang_cc1 -emit-llvm -g %s -o - | FileCheck %s
+// rdar://problem/14985269.
+//
+// Verify that the global init helper function does not get associated
+// with any source location.
+//
+// CHECK: define internal void @_GLOBAL__I_a
+// CHECK-NOT: !dbg
+// CHECK: "_GLOBAL__I_a", i32 0, {{.*}}, i32 0} ; [ DW_TAG_subprogram ] [line 0] [local] [def]
+# 99 "someheader.h"
+class A {
+public:
+ A();
+ int foo() { return 0; }
+};
+# 5 "main.cpp"
+A a;
+
+int f() {
+ return a.foo();
+}
+
OpenPOWER on IntegriCloud