27 lines · plain
1// RUN: %clang_cc1 -emit-llvm -dwarf-version=2 -debug-info-kind=limited -fblocks -o - -x objective-c %s| FileCheck %s2// This code triggered a bug where a dbg.declare intrinsic ended up with the3// wrong parent and subsequently failed the Verifier.4void baz(id b);5void fub(id block);6int foo(void);7void bar(void) {8 fub(^() {9 id a;10 id b = [a bar:^(int e){}];11 if (b) {12 ^() {13 if ((0 && foo()) ? 1 : 0) {14 baz([a aMessage]);15 }16 };17 }18 });19}20 21// Verify that debug info for BlockPointerDbgLoc is emitted for the22// innermost block.23//24// CHECK: define {{.*}}void @__bar_block_invoke_3(ptr noundef %.block_descriptor)25// CHECK: %[[BLOCKADDR:.*]] = alloca ptr, align26// CHECK: #dbg_declare({{.*}}%[[BLOCKADDR]]27