[PATCH] [ms-cxxabi] Destroy temporary record arguments in the callee

Reid Kleckner rnk at google.com
Thu Jun 20 06:15:56 PDT 2013


On Tue, Jun 18, 2013 at 10:15 PM, John McCall <rjmccall at apple.com> wrote:

> +
> +    // In the MSVC++ ABI, make sure arguments have valid destructors.
> +    if
> (Context.getTargetInfo().getCXXABI().isTemporaryDestroyedByCallee())
> +      CheckByValParamsForDtors(NewFD);
> +
>
> Please just do this in CheckParameter.  Check for C++ first, then the ABI
> flag,
> then a record type, then call FinalizeVarWithDestructor. :)
>

On further testing, I don't think this works because CheckParameter fires
on function declarations, where the record might not be complete:
struct A;
void foo(A a);  // Can't look at A's dtor here.
class A {
  friend void bar(A);  // Can't look at A's dtor here.
};

We don't actually know if the parameter decl is for a definition until
ActOnFunctionDeclarator().
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20130620/19d1a9ae/attachment.html>


More information about the cfe-commits mailing list