]> granicus.if.org Git - clang/commitdiff
Set DebugInfo at the beginning of GenerateBlockFunction().
authorDevang Patel <dpatel@apple.com>
Wed, 15 Apr 2009 21:51:44 +0000 (21:51 +0000)
committerDevang Patel <dpatel@apple.com>
Wed, 15 Apr 2009 21:51:44 +0000 (21:51 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69228 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/CGBlocks.cpp
test/CodeGen/blocks-2.c [new file with mode: 0644]

index f1e74206819f3f2ad708216dd49e28ff3e0d7c63..5047f06bd230a1310c2c9b0643589ed7dbb16d0b 100644 (file)
@@ -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/test/CodeGen/blocks-2.c b/test/CodeGen/blocks-2.c
new file mode 100644 (file)
index 0000000..5ee2a73
--- /dev/null
@@ -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;
+}
+