From 2736f2eca78b498dd75c739a76f833ed43cdb43b Mon Sep 17 00:00:00 2001 From: Adrian Prantl Date: Tue, 18 Jun 2013 00:27:36 +0000 Subject: [PATCH] Remove an ugly hack that was meant to eliminate the breakpoint ambiguity between a block assignment and the entry of the block function. In reality this wouldn't work anyway because blocks are predominantly created on-the-fly inside of an ObjC method invocation. The proper fix for the ambiguity is to use -gcolumn-info to differentiate the breakpoints. This is expected to break some block-related darwin-gdb tests. rdar://problem/14039866 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@184157 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/CodeGen/CGStmt.cpp | 5 +---- test/CodeGen/debug-info-block-decl.c | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+), 4 deletions(-) create mode 100644 test/CodeGen/debug-info-block-decl.c diff --git a/lib/CodeGen/CGStmt.cpp b/lib/CodeGen/CGStmt.cpp index b33028b59d..54abbab2af 100644 --- a/lib/CodeGen/CGStmt.cpp +++ b/lib/CodeGen/CGStmt.cpp @@ -34,10 +34,7 @@ using namespace CodeGen; void CodeGenFunction::EmitStopPoint(const Stmt *S) { if (CGDebugInfo *DI = getDebugInfo()) { SourceLocation Loc; - if (isa(S)) - Loc = S->getLocEnd(); - else - Loc = S->getLocStart(); + Loc = S->getLocStart(); DI->EmitLocation(Builder, Loc); LastStopPoint = Loc; diff --git a/test/CodeGen/debug-info-block-decl.c b/test/CodeGen/debug-info-block-decl.c new file mode 100644 index 0000000000..06c0e1ad31 --- /dev/null +++ b/test/CodeGen/debug-info-block-decl.c @@ -0,0 +1,19 @@ +// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -g -fblocks -emit-llvm -o - %s | FileCheck %s +// Assignment and block entry should point to the same line. +// rdar://problem/14039866 + +// CHECK: define{{.*}}@main() +// CHECK: store{{.*}}bitcast{{.*}}, !dbg ![[ASSIGNMENT:[0-9]+]] +// CHECK: define {{.*}} @__main_block_invoke +// CHECK: dbg ![[BLOCK_ENTRY:[0-9]+]] + +int main() +{ +// CHECK: [[ASSIGNMENT]] = metadata !{i32 [[@LINE+2]], +// CHECK: [[BLOCK_ENTRY]] = metadata !{i32 [[@LINE+1]], + int (^blockptr)(void) = ^(void) { + return 0; + }; + return blockptr(); +} + -- 2.40.0