diff options
Diffstat (limited to 'test/CodeGen/global-blocks-lines.c')
-rw-r--r-- | test/CodeGen/global-blocks-lines.c | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/test/CodeGen/global-blocks-lines.c b/test/CodeGen/global-blocks-lines.c new file mode 100644 index 0000000000..36e4618dde --- /dev/null +++ b/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*{{.*}}dbg +// CHECK: store {{.*}}%struct.__block_descriptor*{{.*}}, align +// CHECK: ret +// CHECK: define {{.*}}block_invoke +// CHECK-NOT: store {{.*}}%struct.__block_descriptor*{{.*}}dbg +// CHECK: store {{.*}}%struct.__block_descriptor*{{.*}}, align +// CHECK: ret +// CHECK: define {{.*}}block_invoke +// CHECK-NOT: store {{.*}}%struct.__block_descriptor*{{.*}}dbg +// CHECK: store {{.*}}%struct.__block_descriptor*{{.*}}, align +// 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; +} |