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

Justin Bogner mail at justinbogner.com
Mon Aug 11 11:19:31 PDT 2014


Alex Lorenz <arphaman at gmail.com> writes:
> 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;

There should be spaces around the ? here.

>    if ((isa<CXXConstructorDecl>(GD.getDecl()) &&
> -       GD.getCtorType() != Ctor_Base) ||
> +       GD.getCtorType() != AcceptedCtor) ||
>        (isa<CXXDestructorDecl>(GD.getDecl()) &&
>         GD.getDtorType() != Dtor_Base)) {
>      SkipCoverageMapping = true;

You should really commit the tests this is fixing along with the
change. It makes life much easier for people digging through history
later if code changes and tests are in the same commit.



More information about the cfe-commits mailing list