summaryrefslogtreecommitdiffstats
path: root/clang/test
diff options
context:
space:
mode:
authorAdrian Prantl <aprantl@apple.com>2013-04-02 01:00:48 +0000
committerAdrian Prantl <aprantl@apple.com>2013-04-02 01:00:48 +0000
commit2832b4e8cb2da0a3d06646fb6b3d5d4a92b30364 (patch)
tree7e3b7e98a93e8070fc4b836979649eedc6166b70 /clang/test
parente189b869c552167bbb7fad22549a6703d6c9f9fc (diff)
downloadbcm5719-llvm-2832b4e8cb2da0a3d06646fb6b3d5d4a92b30364.tar.gz
bcm5719-llvm-2832b4e8cb2da0a3d06646fb6b3d5d4a92b30364.zip
un-break remaining gdb buildbot testcases.
Make sure we do not generate line info for debugging-related frame setup. Follow-up to r178361 / rdar://problem/12767564 llvm-svn: 178517
Diffstat (limited to 'clang/test')
-rw-r--r--clang/test/CodeGen/global-blocks-lines.c45
1 files changed, 45 insertions, 0 deletions
diff --git a/clang/test/CodeGen/global-blocks-lines.c b/clang/test/CodeGen/global-blocks-lines.c
new file mode 100644
index 00000000000..b133fbc46b3
--- /dev/null
+++ b/clang/test/CodeGen/global-blocks-lines.c
@@ -0,0 +1,45 @@
+// RUN: %clang_cc1 -fblocks -g -emit-llvm %s -o - | FileCheck %s
+// Make sure we do not generate line info for debugging-related frame setup.
+// CHECK: define {{.*}}block_invoke
+// CHECK-NOT: store {{.*}}%struct.__block_descriptor*{{.*}}, align 8, dbg
+// CHECK: store {{.*}}%struct.__block_descriptor*{{.*}}, align 8
+// CHECK: ret
+// CHECK: define {{.*}}block_invoke
+// CHECK-NOT: store {{.*}}%struct.__block_descriptor*{{.*}}, align 8, dbg
+// CHECK: store {{.*}}%struct.__block_descriptor*{{.*}}, align 8
+// CHECK: ret
+// CHECK: define {{.*}}block_invoke
+// CHECK-NOT: store {{.*}}%struct.__block_descriptor*{{.*}}, align 8, dbg
+// CHECK: store {{.*}}%struct.__block_descriptor*{{.*}}, align 8
+// CHECK: ret
+int printf(const char*, ...);
+
+static void* _NSConcreteGlobalBlock;
+
+
+typedef void (^ HelloBlock_t)(const char * name);
+
+ /* Breakpoint for first Block function. */
+HelloBlock_t helloBlock = ^(const char * name) {
+ printf("Hello there, %s!\n", name);
+};
+
+ /* Breakpoint for second Block function. */
+static HelloBlock_t s_helloBlock = ^(const char * name) {
+ printf("Hello there, %s!\n", name);
+};
+
+/* Breakpoint for third Block function. */
+int X = 1234;
+int (^CP)(void) = ^{ X = X+1; return X; };
+
+int
+main(int argc, char * argv[])
+{
+ helloBlock("world");
+ s_helloBlock("world");
+
+ CP();
+ printf ("X = %d\n", X);
+ return X - 1235;
+}
OpenPOWER on IntegriCloud