From da45f59bdf398efea71e0b6596ebf2b65d8549dc Mon Sep 17 00:00:00 2001 From: Adrian Prantl Date: Tue, 7 Jan 2014 22:05:52 +0000 Subject: [PATCH] Revert "Debug info: Ensure that the last stop point in a function is still within" This reverts commit r198461. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@198714 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/CodeGen/CGDebugInfo.cpp | 5 ++--- lib/CodeGen/CGDebugInfo.h | 8 +------- lib/CodeGen/CGStmt.cpp | 2 +- lib/CodeGen/CodeGenFunction.cpp | 7 +++---- lib/CodeGen/CodeGenFunction.h | 2 +- test/CodeGenCXX/linetable-cleanup.cpp | 6 ++---- test/CodeGenObjC/arc-linetable.m | 5 +---- 7 files changed, 11 insertions(+), 24 deletions(-) diff --git a/lib/CodeGen/CGDebugInfo.cpp b/lib/CodeGen/CGDebugInfo.cpp index 3138d82fb8..2977ed2223 100644 --- a/lib/CodeGen/CGDebugInfo.cpp +++ b/lib/CodeGen/CGDebugInfo.cpp @@ -2537,8 +2537,7 @@ void CGDebugInfo::EmitFunctionStart(GlobalDecl GD, QualType FnType, /// information in the source file. If the location is invalid, the /// previous location will be reused. void CGDebugInfo::EmitLocation(CGBuilderTy &Builder, SourceLocation Loc, - bool ForceColumnInfo, - llvm::MDNode *ForceScope) { + bool ForceColumnInfo) { // Update our current location setLocation(Loc); @@ -2557,7 +2556,7 @@ void CGDebugInfo::EmitLocation(CGBuilderTy &Builder, SourceLocation Loc, // Update last state. PrevLoc = CurLoc; - llvm::MDNode *Scope = ForceScope ? ForceScope : &*LexicalBlockStack.back(); + llvm::MDNode *Scope = LexicalBlockStack.back(); Builder.SetCurrentDebugLocation(llvm::DebugLoc::get (getLineNumber(CurLoc), getColumnNumber(CurLoc, ForceColumnInfo), diff --git a/lib/CodeGen/CGDebugInfo.h b/lib/CodeGen/CGDebugInfo.h index ac31bdf3f5..0ca274f568 100644 --- a/lib/CodeGen/CGDebugInfo.h +++ b/lib/CodeGen/CGDebugInfo.h @@ -211,17 +211,11 @@ public: /// getLocation - Return the current source location. SourceLocation getLocation() const { return CurLoc; } - /// getScope() - Return the current scope. - llvm::MDNode *getScope() const { return LexicalBlockStack.back(); } - /// EmitLocation - Emit metadata to indicate a change in line/column /// information in the source file. /// \param ForceColumnInfo Assume DebugColumnInfo option is true. - /// \param ForceScope Force the location to be in a specific lexical - /// scope rather than the top of LexicalBlockStack. void EmitLocation(CGBuilderTy &Builder, SourceLocation Loc, - bool ForceColumnInfo = false, - llvm::MDNode *ForceScope = 0); + bool ForceColumnInfo = false); /// EmitFunctionStart - Emit a call to llvm.dbg.function.start to indicate /// start of a new function. diff --git a/lib/CodeGen/CGStmt.cpp b/lib/CodeGen/CGStmt.cpp index 50882c8536..b18ff09015 100644 --- a/lib/CodeGen/CGStmt.cpp +++ b/lib/CodeGen/CGStmt.cpp @@ -37,7 +37,7 @@ void CodeGenFunction::EmitStopPoint(const Stmt *S) { Loc = S->getLocStart(); DI->EmitLocation(Builder, Loc); - LastStopPoint = std::make_pair(Loc, DI->getScope()); + LastStopPoint = Loc; } } diff --git a/lib/CodeGen/CodeGenFunction.cpp b/lib/CodeGen/CodeGenFunction.cpp index fb668e4a16..c1e522d0d7 100644 --- a/lib/CodeGen/CodeGenFunction.cpp +++ b/lib/CodeGen/CodeGenFunction.cpp @@ -209,10 +209,9 @@ void CodeGenFunction::FinishFunction(SourceLocation EndLoc) { // all will be fine. if (CGDebugInfo *DI = getDebugInfo()) { if (OnlySimpleReturnStmts) - DI->EmitLocation(Builder, LastStopPoint.first, - false, LastStopPoint.second); + DI->EmitLocation(Builder, LastStopPoint); else - DI->EmitLocation(Builder, EndLoc, false, LastStopPoint.second); + DI->EmitLocation(Builder, EndLoc); } // Pop any cleanups that might have been associated with the @@ -229,7 +228,7 @@ void CodeGenFunction::FinishFunction(SourceLocation EndLoc) { if (CGDebugInfo *DI = getDebugInfo()) if (OnlySimpleReturnStmts) - DI->EmitLocation(Builder, EndLoc, false, LastStopPoint.second); + DI->EmitLocation(Builder, EndLoc); } // Emit function epilog (to return). diff --git a/lib/CodeGen/CodeGenFunction.h b/lib/CodeGen/CodeGenFunction.h index c11f2c9172..37bbcf3f34 100644 --- a/lib/CodeGen/CodeGenFunction.h +++ b/lib/CodeGen/CodeGenFunction.h @@ -877,7 +877,7 @@ private: unsigned NumSimpleReturnExprs; /// The last regular (non-return) debug location (breakpoint) in the function. - std::pair LastStopPoint; + SourceLocation LastStopPoint; public: /// A scope within which we are constructing the fields of an object which diff --git a/test/CodeGenCXX/linetable-cleanup.cpp b/test/CodeGenCXX/linetable-cleanup.cpp index ce7f2c674b..96b8572252 100644 --- a/test/CodeGenCXX/linetable-cleanup.cpp +++ b/test/CodeGenCXX/linetable-cleanup.cpp @@ -46,14 +46,12 @@ void bar() void baz() { if (!foo()) - // CHECK: ![[SCOPE1:.*]] = metadata !{{{.*}}, i32 [[@LINE-1]], {{.*}}} ; [ DW_TAG_lexical_block ] - // CHECK: {{.*}} = metadata !{i32 [[@LINE+1]], i32 0, metadata ![[SCOPE1]], null} + // CHECK: {{.*}} = metadata !{i32 [[@LINE+1]], i32 0, metadata !{{.*}}, null} return; if (foo()) { // no cleanup - // CHECK: {{.*}} = metadata !{i32 [[@LINE+2]], i32 0, metadata ![[SCOPE2:.*]], null} - // CHECK: ![[SCOPE2]] = metadata !{{{.*}}, i32 [[@LINE-3]], {{.*}}} ; [ DW_TAG_lexical_block ] + // CHECK: {{.*}} = metadata !{i32 [[@LINE+1]], i32 0, metadata !{{.*}}, null} return; } // CHECK: ![[RETBAZ]] = metadata !{i32 [[@LINE+1]], i32 0, metadata !{{.*}}, null} diff --git a/test/CodeGenObjC/arc-linetable.m b/test/CodeGenObjC/arc-linetable.m index 34b7d7640f..eac91f1889 100644 --- a/test/CodeGenObjC/arc-linetable.m +++ b/test/CodeGenObjC/arc-linetable.m @@ -47,11 +47,8 @@ @implementation AppDelegate : NSObject -// CHECK: ![[TESTNOSIDEEFFECT:.*]] = {{.*}}[ DW_TAG_subprogram ] [line [[@LINE+1]]] [local] [def] [-[AppDelegate testNoSideEffect:]] - (int)testNoSideEffect:(NSString *)foo { - // CHECK: ![[COMPOUND_STMT:.*]] = metadata !{i32 786443, metadata !{{.*}}, metadata ![[TESTNOSIDEEFFECT]], i32 [[@LINE-1]], i32 0, i32 0} ; [ DW_TAG_lexical_block ] - int x = 1; - // CHECK: ![[ARC1]] = metadata !{i32 [[@LINE+1]], i32 0, metadata ![[COMPOUND_STMT]], null} + // CHECK: ![[ARC1]] = metadata !{i32 [[@LINE+1]], i32 0, metadata !{{.*}}, null} return 1; // Return expression // CHECK: ![[RET1]] = metadata !{i32 [[@LINE+1]], i32 0, metadata !{{.*}}, null} } // Cleanup + Ret -- 2.40.0