This broke Chromium again. I've reverted in rr345026 See https://bugs.chromium.org/p/chromium/issues/detail?id=898152#c1 for the reproducer.
On Tue, Oct 23, 2018 at 1:06 AM, Hsiangkai Wang via cfe-commits <cfe-commits@lists.llvm.org> wrote: > Author: hsiangkai > Date: Tue Oct 23 01:06:21 2018 > New Revision: 345009 > > URL: http://llvm.org/viewvc/llvm-project?rev=345009&view=rev > Log: > [DebugInfo] Generate debug information for labels. (After fix PR39094) > > Generate DILabel metadata and call llvm.dbg.label after label > statement to associate the metadata with the label. > > After fixing PR37395. > After fixing problems in LiveDebugVariables. > After fixing NULL symbol problems in AddressPool when enabling > split-dwarf-file. > After fixing PR39094. > > Differential Revision: https://reviews.llvm.org/D45045 > > Added: > cfe/trunk/test/CodeGen/debug-label-inline.c > cfe/trunk/test/CodeGen/debug-label.c > Modified: > cfe/trunk/lib/CodeGen/CGDebugInfo.cpp > cfe/trunk/lib/CodeGen/CGDebugInfo.h > cfe/trunk/lib/CodeGen/CGStmt.cpp > > Modified: cfe/trunk/lib/CodeGen/CGDebugInfo.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGDebugInfo.cpp?rev=345009&r1=345008&r2=345009&view=diff > ============================================================================== > --- cfe/trunk/lib/CodeGen/CGDebugInfo.cpp (original) > +++ cfe/trunk/lib/CodeGen/CGDebugInfo.cpp Tue Oct 23 01:06:21 2018 > @@ -3804,6 +3804,32 @@ CGDebugInfo::EmitDeclareOfAutoVariable(c > 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 *Ty) { > llvm::DIType *CachedTy = getTypeOrNull(QualTy); > > Modified: cfe/trunk/lib/CodeGen/CGDebugInfo.h > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGDebugInfo.h?rev=345009&r1=345008&r2=345009&view=diff > ============================================================================== > --- cfe/trunk/lib/CodeGen/CGDebugInfo.h (original) > +++ cfe/trunk/lib/CodeGen/CGDebugInfo.h Tue Oct 23 01:06:21 2018 > @@ -420,6 +420,9 @@ public: > llvm::Value *AI, > 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 > /// declaration in a block. > void EmitDeclareOfBlockDeclRefVariable( > > Modified: cfe/trunk/lib/CodeGen/CGStmt.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGStmt.cpp?rev=345009&r1=345008&r2=345009&view=diff > ============================================================================== > --- cfe/trunk/lib/CodeGen/CGStmt.cpp (original) > +++ cfe/trunk/lib/CodeGen/CGStmt.cpp Tue Oct 23 01:06:21 2018 > @@ -531,6 +531,16 @@ void CodeGenFunction::EmitLabel(const La > } > > 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()); > } > > > Added: cfe/trunk/test/CodeGen/debug-label-inline.c > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/debug-label-inline.c?rev=345009&view=auto > ============================================================================== > --- cfe/trunk/test/CodeGen/debug-label-inline.c (added) > +++ cfe/trunk/test/CodeGen/debug-label-inline.c Tue Oct 23 01:06:21 2018 > @@ -0,0 +1,28 @@ > +// 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]]) > > Added: cfe/trunk/test/CodeGen/debug-label.c > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/debug-label.c?rev=345009&view=auto > ============================================================================== > --- cfe/trunk/test/CodeGen/debug-label.c (added) > +++ cfe/trunk/test/CodeGen/debug-label.c Tue Oct 23 01:06:21 2018 > @@ -0,0 +1,16 @@ > +// 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, > > > _______________________________________________ > cfe-commits mailing list > cfe-commits@lists.llvm.org > http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits