forked from OSchip/llvm-project
Revert r369458 "[DebugInfo] Add debug location to dynamic atexit destructor"
It causes the build to fail with "inlinable function call in a function with debug info must have a !dbg location" in Chromium. See llvm-commits thread for more info. (This also reverts the follow-up in r369474.) > Fixes PR43012 > > Differential Revision: https://reviews.llvm.org/D66328 llvm-svn: 369633
This commit is contained in:
parent
1153dc9603
commit
307a73221b
|
@ -3564,8 +3564,7 @@ void CGDebugInfo::EmitFunctionStart(GlobalDecl GD, SourceLocation Loc,
|
|||
if (Name.startswith("\01"))
|
||||
Name = Name.substr(1);
|
||||
|
||||
if (!HasDecl || D->isImplicit() || D->hasAttr<ArtificialAttr>() ||
|
||||
(isa<VarDecl>(D) && GD.getDynamicInitKind() == DynamicInitKind::AtExit)) {
|
||||
if (!HasDecl || D->isImplicit() || D->hasAttr<ArtificialAttr>()) {
|
||||
Flags |= llvm::DINode::FlagArtificial;
|
||||
// Artificial functions should not silently reuse CurLoc.
|
||||
CurLoc = SourceLocation();
|
||||
|
|
|
@ -247,8 +247,6 @@ llvm::Function *CodeGenFunction::createAtExitStub(const VarDecl &VD,
|
|||
|
||||
CGF.StartFunction(GlobalDecl(&VD, DynamicInitKind::AtExit),
|
||||
CGM.getContext().VoidTy, fn, FI, FunctionArgList());
|
||||
// Emit an artificial location for this function.
|
||||
auto AL = ApplyDebugLocation::CreateArtificial(CGF);
|
||||
|
||||
llvm::CallInst *call = CGF.Builder.CreateCall(dtor, addr);
|
||||
|
||||
|
|
|
@ -1,20 +0,0 @@
|
|||
// RUN: %clang_cc1 -triple x86_64-windows-msvc -emit-llvm %s -gcodeview -debug-info-kind=limited -o - | FileCheck %s
|
||||
|
||||
struct a {
|
||||
~a();
|
||||
};
|
||||
template <typename b> struct c : a {
|
||||
c(void (b::*)());
|
||||
};
|
||||
struct B {
|
||||
virtual void e();
|
||||
};
|
||||
c<B> *d() { static c<B> f(&B::e); return &f; }
|
||||
|
||||
// CHECK: define internal void @"??__Ff@?1??d@@YAPEAU?$c@UB@@@@XZ@YAXXZ"()
|
||||
// CHECK-SAME: !dbg ![[SUBPROGRAM:[0-9]+]] {
|
||||
// CHECK: call void @"??1?$c@UB@@@@QEAA@XZ"(%struct.c* @"?f@?1??d@@YAPEAU?$c@UB@@@@XZ@4U2@A"), !dbg ![[LOCATION:[0-9]+]]
|
||||
// CHECK-NEXT: ret void, !dbg ![[LOCATION]]
|
||||
// CHECK: ![[SUBPROGRAM]] = distinct !DISubprogram(name: "`dynamic atexit destructor for 'f'"
|
||||
// CHECK-SAME: flags: DIFlagArtificial
|
||||
// CHECK: ![[LOCATION]] = !DILocation(line: 0, scope: ![[SUBPROGRAM]])
|
|
@ -30,24 +30,24 @@ A FooTpl<T>::sdm_tpl(sizeof(U) + sizeof(T));
|
|||
template A FooTpl<int>::sdm_tpl<int>;
|
||||
|
||||
// CHECK-NOKEXT: !DISubprogram(name: "__cxx_global_var_init",{{.*}} line: 15,{{.*}} DISPFlagLocalToUnit | DISPFlagDefinition
|
||||
// CHECK-NOKEXT: !DISubprogram(name: "__dtor_glob",{{.*}}: DISPFlagLocalToUnit | DISPFlagDefinition
|
||||
// CHECK-NOKEXT: !DISubprogram(name: "__dtor_glob",{{.*}} line: 15,{{.*}} DISPFlagLocalToUnit | DISPFlagDefinition
|
||||
// CHECK-NOKEXT: !DISubprogram(name: "__cxx_global_var_init.1",{{.*}} line: 16,{{.*}} DISPFlagLocalToUnit | DISPFlagDefinition
|
||||
// CHECK-NOKEXT: !DISubprogram(name: "__cxx_global_array_dtor",{{.*}} line: 16,{{.*}} DISPFlagLocalToUnit | DISPFlagDefinition
|
||||
// CHECK-NOKEXT: !DISubprogram(name: "__dtor_array",{{.*}}: DISPFlagLocalToUnit | DISPFlagDefinition
|
||||
// CHECK-NOKEXT: !DISubprogram(name: "__dtor__ZZ3foovE4stat",{{.*}} DISPFlagLocalToUnit | DISPFlagDefinition
|
||||
// CHECK-NOKEXT: !DISubprogram(name: "__dtor_array",{{.*}} line: 16,{{.*}} DISPFlagLocalToUnit | DISPFlagDefinition
|
||||
// CHECK-NOKEXT: !DISubprogram(name: "__dtor__ZZ3foovE4stat",{{.*}} line: 19,{{.*}} DISPFlagLocalToUnit | DISPFlagDefinition
|
||||
// CHECK-NOKEXT: !DISubprogram({{.*}} DISPFlagLocalToUnit | DISPFlagDefinition
|
||||
|
||||
// CHECK-KEXT: !DISubprogram({{.*}} DISPFlagLocalToUnit | DISPFlagDefinition
|
||||
|
||||
// CHECK-MSVC: !DISubprogram(name: "`dynamic initializer for 'glob'",{{.*}} line: 15,{{.*}}: DISPFlagLocalToUnit | DISPFlagDefinition
|
||||
// CHECK-MSVC: !DISubprogram(name: "`dynamic atexit destructor for 'glob'",{{.*}}: DISPFlagLocalToUnit | DISPFlagDefinition
|
||||
// CHECK-MSVC: !DISubprogram(name: "`dynamic atexit destructor for 'glob'",{{.*}} line: 15,{{.*}}: DISPFlagLocalToUnit | DISPFlagDefinition
|
||||
// CHECK-MSVC: !DISubprogram(name: "`dynamic initializer for 'array'",{{.*}} line: 16,{{.*}}: DISPFlagLocalToUnit | DISPFlagDefinition
|
||||
// CHECK-MSVC: !DISubprogram(name: "__cxx_global_array_dtor",{{.*}} line: 16,{{.*}}: DISPFlagLocalToUnit | DISPFlagDefinition
|
||||
// CHECK-MSVC: !DISubprogram(name: "`dynamic atexit destructor for 'array'",{{.*}}: DISPFlagLocalToUnit | DISPFlagDefinition
|
||||
// CHECK-MSVC: !DISubprogram(name: "`dynamic atexit destructor for 'stat'",{{.*}}: DISPFlagLocalToUnit | DISPFlagDefinition
|
||||
// CHECK-MSVC: !DISubprogram(name: "`dynamic atexit destructor for 'array'",{{.*}} line: 16,{{.*}}: DISPFlagLocalToUnit | DISPFlagDefinition
|
||||
// CHECK-MSVC: !DISubprogram(name: "`dynamic atexit destructor for 'stat'",{{.*}} line: 19,{{.*}}: DISPFlagLocalToUnit | DISPFlagDefinition
|
||||
|
||||
// MSVC does weird stuff when templates are involved, so we don't match exactly,
|
||||
// but these names are reasonable.
|
||||
// FIXME: These should not be marked DISPFlagLocalToUnit.
|
||||
// CHECK-MSVC: !DISubprogram(name: "FooTpl<int>::`dynamic initializer for 'sdm_tpl<int>'",{{.*}} line: 29,{{.*}}: DISPFlagLocalToUnit | DISPFlagDefinition
|
||||
// CHECK-MSVC: !DISubprogram(name: "FooTpl<int>::`dynamic atexit destructor for 'sdm_tpl<int>'",{{.*}}: DISPFlagLocalToUnit | DISPFlagDefinition
|
||||
// CHECK-MSVC: !DISubprogram(name: "FooTpl<int>::`dynamic atexit destructor for 'sdm_tpl<int>'",{{.*}} line: 29,{{.*}}: DISPFlagLocalToUnit | DISPFlagDefinition
|
||||
|
|
Loading…
Reference in New Issue