r215365 - Coverage mapping: emit mapping for cxx constructors that use microsoft's ABI

Alex Lorenz arphaman at gmail.com
Mon Aug 11 10:45:49 PDT 2014


Author: arphaman
Date: Mon Aug 11 12:45:49 2014
New Revision: 215365

URL: http://llvm.org/viewvc/llvm-project?rev=215365&view=rev
Log:
Coverage mapping: emit mapping for cxx constructors that use microsoft's ABI

Modified:
    cfe/trunk/lib/CodeGen/CodeGenPGO.cpp

Modified: cfe/trunk/lib/CodeGen/CodeGenPGO.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenPGO.cpp?rev=215365&r1=215364&r2=215365&view=diff
==============================================================================
--- cfe/trunk/lib/CodeGen/CodeGenPGO.cpp (original)
+++ cfe/trunk/lib/CodeGen/CodeGenPGO.cpp Mon Aug 11 12:45:49 2014
@@ -847,8 +847,13 @@ void CodeGenPGO::checkGlobalDecl(GlobalD
   // a class. Every function is instrumented, but we only want to provide
   // coverage for one of them. Because of that we only emit the coverage mapping
   // for the base constructor/destructor.
+  // For Microsoft's C++ ABI Clang emits only the complete constructor,
+  // therefore we have to emit the coverage mapping for it instead of the base
+  // one.
+  const CXXCtorType AcceptedCtor =
+      CGM.getTarget().getCXXABI().isMicrosoft()? Ctor_Complete : Ctor_Base;
   if ((isa<CXXConstructorDecl>(GD.getDecl()) &&
-       GD.getCtorType() != Ctor_Base) ||
+       GD.getCtorType() != AcceptedCtor) ||
       (isa<CXXDestructorDecl>(GD.getDecl()) &&
        GD.getDtorType() != Dtor_Base)) {
     SkipCoverageMapping = true;





More information about the cfe-commits mailing list