diff options
-rw-r--r-- | clang/lib/CodeGen/CGBlocks.cpp | 5 | ||||
-rw-r--r-- | clang/test/CodeGen/blocks-2.c | 13 |
2 files changed, 18 insertions, 0 deletions
diff --git a/clang/lib/CodeGen/CGBlocks.cpp b/clang/lib/CodeGen/CGBlocks.cpp index f1e74206819..5047f06bd23 100644 --- a/clang/lib/CodeGen/CGBlocks.cpp +++ b/clang/lib/CodeGen/CGBlocks.cpp @@ -600,6 +600,11 @@ CodeGenFunction::GenerateBlockFunction(const BlockExpr *BExpr, uint64_t &Align, llvm::SmallVector<const Expr *, 8> &subBlockDeclRefDecls, bool &subBlockHasCopyDispose) { + + // Check if we should generate debug info for this block. + if (CGM.getDebugInfo()) + DebugInfo = CGM.getDebugInfo(); + // Arrange for local static and local extern declarations to appear // to be local to this function as well, as they are directly referenced // in a block. diff --git a/clang/test/CodeGen/blocks-2.c b/clang/test/CodeGen/blocks-2.c new file mode 100644 index 00000000000..5ee2a73a82c --- /dev/null +++ b/clang/test/CodeGen/blocks-2.c @@ -0,0 +1,13 @@ +// RUN: clang-cc -g %s -emit-llvm -o %t -fblocks +// RUN: grep "func.start" %t | count 4 +// 1 declaration, 1 bar, 1 test_block_dbg and 1 for the block. + +static __inline__ __attribute__((always_inline)) int bar(int va, int vb) { return (va == vb); } + +int test_block_dbg() { + extern int g; + static int i = 1; + ^(int j){ i = bar(3,4); }(0); + return i + g; +} + |