forked from OSchip/llvm-project
Revert r331843 "[DebugInfo] Generate debug information for labels."
It broke the Chromium build (see reply on the review). > Generate DILabel metadata and call llvm.dbg.label after label > statement to associate the metadata with the label. > > Differential Revision: https://reviews.llvm.org/D45045 > > Patch by Hsiangkai Wang. This doesn't revert the change to backend-unsupported-error.ll that seems to correspond to an llvm-side change. llvm-svn: 331861
This commit is contained in:
parent
97379ff6b2
commit
ef2f6948be
|
@ -3647,32 +3647,6 @@ CGDebugInfo::EmitDeclareOfAutoVariable(const VarDecl *VD, llvm::Value *Storage,
|
||||||
return EmitDeclare(VD, Storage, llvm::None, Builder);
|
return EmitDeclare(VD, Storage, llvm::None, Builder);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CGDebugInfo::EmitLabel(const LabelDecl *D, CGBuilderTy &Builder) {
|
|
||||||
assert(DebugKind >= codegenoptions::LimitedDebugInfo);
|
|
||||||
assert(!LexicalBlockStack.empty() && "Region stack mismatch, stack empty!");
|
|
||||||
|
|
||||||
if (D->hasAttr<NoDebugAttr>())
|
|
||||||
return;
|
|
||||||
|
|
||||||
auto *Scope = cast<llvm::DIScope>(LexicalBlockStack.back());
|
|
||||||
llvm::DIFile *Unit = getOrCreateFile(D->getLocation());
|
|
||||||
|
|
||||||
// Get location information.
|
|
||||||
unsigned Line = getLineNumber(D->getLocation());
|
|
||||||
unsigned Column = getColumnNumber(D->getLocation());
|
|
||||||
|
|
||||||
StringRef Name = D->getName();
|
|
||||||
|
|
||||||
// Create the descriptor for the label.
|
|
||||||
auto *L =
|
|
||||||
DBuilder.createLabel(Scope, Name, Unit, Line, CGM.getLangOpts().Optimize);
|
|
||||||
|
|
||||||
// Insert an llvm.dbg.label into the current block.
|
|
||||||
DBuilder.insertLabel(L,
|
|
||||||
llvm::DebugLoc::get(Line, Column, Scope, CurInlinedAt),
|
|
||||||
Builder.GetInsertBlock());
|
|
||||||
}
|
|
||||||
|
|
||||||
llvm::DIType *CGDebugInfo::CreateSelfType(const QualType &QualTy,
|
llvm::DIType *CGDebugInfo::CreateSelfType(const QualType &QualTy,
|
||||||
llvm::DIType *Ty) {
|
llvm::DIType *Ty) {
|
||||||
llvm::DIType *CachedTy = getTypeOrNull(QualTy);
|
llvm::DIType *CachedTy = getTypeOrNull(QualTy);
|
||||||
|
|
|
@ -396,9 +396,6 @@ public:
|
||||||
llvm::Value *AI,
|
llvm::Value *AI,
|
||||||
CGBuilderTy &Builder);
|
CGBuilderTy &Builder);
|
||||||
|
|
||||||
/// Emit call to \c llvm.dbg.label for an label.
|
|
||||||
void EmitLabel(const LabelDecl *D, CGBuilderTy &Builder);
|
|
||||||
|
|
||||||
/// Emit call to \c llvm.dbg.declare for an imported variable
|
/// Emit call to \c llvm.dbg.declare for an imported variable
|
||||||
/// declaration in a block.
|
/// declaration in a block.
|
||||||
void EmitDeclareOfBlockDeclRefVariable(const VarDecl *variable,
|
void EmitDeclareOfBlockDeclRefVariable(const VarDecl *variable,
|
||||||
|
|
|
@ -531,16 +531,6 @@ void CodeGenFunction::EmitLabel(const LabelDecl *D) {
|
||||||
}
|
}
|
||||||
|
|
||||||
EmitBlock(Dest.getBlock());
|
EmitBlock(Dest.getBlock());
|
||||||
|
|
||||||
// Emit debug info for labels.
|
|
||||||
if (CGDebugInfo *DI = getDebugInfo()) {
|
|
||||||
if (CGM.getCodeGenOpts().getDebugInfo() >=
|
|
||||||
codegenoptions::LimitedDebugInfo) {
|
|
||||||
DI->setLocation(D->getLocation());
|
|
||||||
DI->EmitLabel(D, Builder);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
incrementProfileCounter(D->getStmt());
|
incrementProfileCounter(D->getStmt());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,28 +0,0 @@
|
||||||
// This test will test the correctness of generating DILabel and
|
|
||||||
// llvm.dbg.label when the label is in inlined functions.
|
|
||||||
//
|
|
||||||
// RUN: %clang_cc1 -O2 %s -o - -emit-llvm -debug-info-kind=limited | FileCheck %s
|
|
||||||
inline int f1(int a, int b) {
|
|
||||||
int sum;
|
|
||||||
|
|
||||||
top:
|
|
||||||
sum = a + b;
|
|
||||||
return sum;
|
|
||||||
}
|
|
||||||
|
|
||||||
extern int ga, gb;
|
|
||||||
|
|
||||||
int f2(void) {
|
|
||||||
int result;
|
|
||||||
|
|
||||||
result = f1(ga, gb);
|
|
||||||
// CHECK: call void @llvm.dbg.label(metadata [[LABEL_METADATA:!.*]]), !dbg [[LABEL_LOCATION:!.*]]
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
// CHECK: distinct !DISubprogram(name: "f1", {{.*}}, retainedNodes: [[ELEMENTS:!.*]])
|
|
||||||
// CHECK: [[ELEMENTS]] = !{{{.*}}, [[LABEL_METADATA]]}
|
|
||||||
// CHECK: [[LABEL_METADATA]] = !DILabel({{.*}}, name: "top", {{.*}}, line: 8)
|
|
||||||
// CHECK: [[INLINEDAT:!.*]] = distinct !DILocation(line: 18,
|
|
||||||
// CHECK: [[LABEL_LOCATION]] = !DILocation(line: 8, {{.*}}, inlinedAt: [[INLINEDAT]])
|
|
|
@ -1,16 +0,0 @@
|
||||||
// This test will test the correstness of generating DILabel and
|
|
||||||
// llvm.dbg.label for labels.
|
|
||||||
//
|
|
||||||
// RUN: %clang_cc1 -emit-llvm %s -o - -emit-llvm -debug-info-kind=limited | FileCheck %s
|
|
||||||
|
|
||||||
int f1(int a, int b) {
|
|
||||||
int sum;
|
|
||||||
|
|
||||||
top:
|
|
||||||
// CHECK: call void @llvm.dbg.label(metadata [[LABEL_METADATA:!.*]]), !dbg [[LABEL_LOCATION:!.*]]
|
|
||||||
sum = a + b;
|
|
||||||
return sum;
|
|
||||||
}
|
|
||||||
|
|
||||||
// CHECK: [[LABEL_METADATA]] = !DILabel({{.*}}, name: "top", {{.*}}, line: 9)
|
|
||||||
// CHECK: [[LABEL_LOCATION]] = !DILocation(line: 9,
|
|
Loading…
Reference in New Issue