Author: adrian Date: Wed Nov 16 12:49:47 2016 New Revision: 287134 URL: http://llvm.org/viewvc/llvm-project?rev=287134&view=rev Log: Fix PR31029 by attaching an artificial debug location to msabi thunks. This was a latent bug that was recently uncovered by r286400.
Added: cfe/trunk/test/CodeGenCXX/debug-info-thunk-msabi.cpp Modified: cfe/trunk/lib/CodeGen/MicrosoftCXXABI.cpp Modified: cfe/trunk/lib/CodeGen/MicrosoftCXXABI.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/MicrosoftCXXABI.cpp?rev=287134&r1=287133&r2=287134&view=diff ============================================================================== --- cfe/trunk/lib/CodeGen/MicrosoftCXXABI.cpp (original) +++ cfe/trunk/lib/CodeGen/MicrosoftCXXABI.cpp Wed Nov 16 12:49:47 2016 @@ -3840,8 +3840,11 @@ MicrosoftCXXABI::getAddrOfCXXCtorClosure 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); Added: cfe/trunk/test/CodeGenCXX/debug-info-thunk-msabi.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/debug-info-thunk-msabi.cpp?rev=287134&view=auto ============================================================================== --- cfe/trunk/test/CodeGenCXX/debug-info-thunk-msabi.cpp (added) +++ cfe/trunk/test/CodeGenCXX/debug-info-thunk-msabi.cpp Wed Nov 16 12:49:47 2016 @@ -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 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits