summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDevang Patel <dpatel@apple.com>2009-04-15 21:51:44 +0000
committerDevang Patel <dpatel@apple.com>2009-04-15 21:51:44 +0000
commit9074ed8c6a05be2445769efc0d11ba7bbe464278 (patch)
treed3b5c6412f595908cab667feea856a4a666b2ab2
parent332ef55cf27c8bba68729368b3c331c20f776df0 (diff)
downloadbcm5719-llvm-9074ed8c6a05be2445769efc0d11ba7bbe464278.tar.gz
bcm5719-llvm-9074ed8c6a05be2445769efc0d11ba7bbe464278.zip
Set DebugInfo at the beginning of GenerateBlockFunction().
llvm-svn: 69228
-rw-r--r--clang/lib/CodeGen/CGBlocks.cpp5
-rw-r--r--clang/test/CodeGen/blocks-2.c13
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;
+}
+
OpenPOWER on IntegriCloud