| // RUN: %clang_cc1 -fblocks -debug-info-kind=limited -emit-llvm %s -o - | FileCheck %s |
| // Ensure that we generate a line table entry for the block cleanup. |
| // CHECK: define {{.*}} @__main_block_invoke |
| // CHECK: _NSConcreteStackBlock |
| // CHECK: = bitcast {{.*}}, !dbg ![[L1:[0-9]+]] |
| // CHECK-NOT: call {{.*}} @_Block_object_dispose{{.*}}, !dbg ![[L1]] |
| void * _NSConcreteStackBlock; |
| extern "C" void exit(int); |
| zero, one, two, three, four |
| typedef enum numbers (^myblock)(enum numbers); |
| __block enum numbers x = one; |
| __block enum numbers y = two; |
| /* Breakpoint for first Block function. */ |
| myblock CL = ^(enum numbers z) |
| { enum numbers savex = x; |
| { __block enum numbers x = savex; |
| /* Breakpoint for second Block function. */ |
| return (enum numbers) four; |
| enum numbers res = (enum numbers)test(CL); |