forked from OSchip/llvm-project
Fix PR31029 by attaching an artificial debug location to msabi thunks.
This was a latent bug that was recently uncovered by r286400. llvm-svn: 287134
This commit is contained in:
parent
17c65af82f
commit
d3c4e1b11f
|
@ -3840,8 +3840,11 @@ MicrosoftCXXABI::getAddrOfCXXCtorClosure(const CXXConstructorDecl *CD,
|
|||
FunctionArgs.push_back(&IsMostDerived);
|
||||
|
||||
// Start defining the function.
|
||||
auto NL = ApplyDebugLocation::CreateEmpty(CGF);
|
||||
CGF.StartFunction(GlobalDecl(), FnInfo.getReturnType(), ThunkFn, FnInfo,
|
||||
FunctionArgs, CD->getLocation(), SourceLocation());
|
||||
// Create a scope with an artificial location for the body of this function.
|
||||
auto AL = ApplyDebugLocation::CreateArtificial(CGF);
|
||||
EmitThisParam(CGF);
|
||||
llvm::Value *This = getThisValue(CGF);
|
||||
|
||||
|
|
|
@ -0,0 +1,19 @@
|
|||
// RUN: %clang_cc1 %s -triple i386-pc-windows-msvc19.0.0 -emit-obj \
|
||||
// RUN: -debug-info-kind=line-tables-only -fms-extensions
|
||||
class __declspec(dllexport) A {
|
||||
A(int * = new int) {}
|
||||
};
|
||||
// CHECK: define {{.*}}void @"\01??_FA@@AAEXXZ"
|
||||
// CHECK-SAME: !dbg ![[SP:[0-9]+]]
|
||||
// CHECK-NOT: {{ret }}
|
||||
// CHECK: call x86_thiscallcc %class.A* @"\01??0A@@AAE@PAH@Z"(%class.A* %this1, i32* %0)
|
||||
// CHECK-SAME: !dbg ![[DBG:[0-9]+]]
|
||||
// CHECK: ret void, !dbg ![[DBG]]
|
||||
//
|
||||
// CHECK: ![[SP]] = distinct !DISubprogram(
|
||||
// CHECK-SAME: line: 3
|
||||
// CHECK-SAME: isDefinition: true
|
||||
// CHECK-SAME: DIFlagArtificial
|
||||
// CHECK-SAME: ){{$}}
|
||||
//
|
||||
// CHECK: ![[DBG]] = !DILocation(line: 0
|
Loading…
Reference in New Issue