forked from OSchip/llvm-project
DebugInfo: Fix cases where location failed to be updated after r225000
The optimization (that appears to have been here since the earliest implementation (r50848) & has become more complicated over the years) to avoid recreating the debugloc if it would be the same was out of date because ApplyDebugLocation was not re-updating the CurLoc/PrevLoc. This optimization doesn't look terribly beneficial/necessary, so I'm removing it - if it turns up in benchmarks, I'm happy to reconsider/reimplement this with justification, but for now it just seems to add complexity/problems. llvm-svn: 225083
This commit is contained in:
parent
434fedb8d8
commit
ba90b04b7b
|
@ -2628,20 +2628,6 @@ void CGDebugInfo::EmitLocation(CGBuilderTy &Builder, SourceLocation Loc,
|
|||
if (CurLoc.isInvalid() || CurLoc.isMacroID())
|
||||
return;
|
||||
|
||||
// Don't bother if things are the same as last time.
|
||||
SourceManager &SM = CGM.getContext().getSourceManager();
|
||||
assert(!LexicalBlockStack.empty());
|
||||
if (CurLoc == PrevLoc ||
|
||||
SM.getExpansionLoc(CurLoc) == SM.getExpansionLoc(PrevLoc))
|
||||
// New Builder may not be in sync with CGDebugInfo.
|
||||
if (!Builder.getCurrentDebugLocation().isUnknown() &&
|
||||
Builder.getCurrentDebugLocation().getScope(CGM.getLLVMContext()) ==
|
||||
LexicalBlockStack.back())
|
||||
return;
|
||||
|
||||
// Update last state.
|
||||
PrevLoc = CurLoc;
|
||||
|
||||
llvm::MDNode *Scope = LexicalBlockStack.back();
|
||||
Builder.SetCurrentDebugLocation(llvm::DebugLoc::get(
|
||||
getLineNumber(CurLoc), getColumnNumber(CurLoc, ForceColumnInfo), Scope));
|
||||
|
|
|
@ -53,7 +53,7 @@ class CGDebugInfo {
|
|||
const CodeGenOptions::DebugInfoKind DebugKind;
|
||||
llvm::DIBuilder DBuilder;
|
||||
llvm::DICompileUnit TheCU;
|
||||
SourceLocation CurLoc, PrevLoc;
|
||||
SourceLocation CurLoc;
|
||||
llvm::DIType VTablePtrType;
|
||||
llvm::DIType ClassTy;
|
||||
llvm::DICompositeType ObjTy;
|
||||
|
|
|
@ -130,6 +130,15 @@ void f12() {
|
|||
f12_2();
|
||||
}
|
||||
|
||||
// CHECK-LABEL: define
|
||||
void f13() {
|
||||
// CHECK: call {{.*}} !dbg [[DBG_F13:!.*]]
|
||||
#define F13_IMPL 1, src()
|
||||
1,
|
||||
#line 1400
|
||||
F13_IMPL;
|
||||
}
|
||||
|
||||
// CHECK: [[DBG_F1]] = !{i32 100,
|
||||
// CHECK: [[DBG_FOO_VALUE]] = !{i32 200,
|
||||
// CHECK: [[DBG_FOO_REF]] = !{i32 202,
|
||||
|
@ -146,3 +155,4 @@ void f12() {
|
|||
// CHECK: [[DBG_F10_STORE]] = !{i32 1100,
|
||||
// CHECK: [[DBG_F11]] = !{i32 1200,
|
||||
// CHECK: [[DBG_F12]] = !{i32 1300,
|
||||
// CHECK: [[DBG_F13]] = !{i32 1400,
|
||||
|
|
Loading…
Reference in New Issue