elsteveogrande added inline comments.

================
Comment at: lib/Serialization/ASTReaderDecl.cpp:1771
     auto *Def = DD.Definition;
     DD = std::move(MergeDD);
     DD.Definition = Def;
----------------
Hi @rsmith, thanks again for looking!  This is the part that I was concerned 
about: that `DD` could be either a `DefinitionData` or `LambdaDefinitionData` 
reference; similar `MergeDD`.  It didn't seem that move-assign was well-defined 
in the cases where they were mixed.

If their being different is completely unexpected, though, this whole thing 
could perhaps be an assertion that they are both lambda, or both not lambda.  
And an `IsLambda` field on the CXXRecordDecl` (or `TTK_Lambda`).

Alternatively, I could make the lambda data a pointer or 
`std::unique_ptr<LambdaDefinitionData>` inside `DefinitionData` (and maybe make 
the latter `final`), so as not to allocate much extra space in the non-lambda 
case.

Depends on whether a new tag type is not too much of a breaking change.  Also, 
whether it's known at this point that this record is a lambda (and `DD` is 
already of the correct type).


Repository:
  rC Clang

https://reviews.llvm.org/D50948



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
  • [PATCH] D50948: l... Steve O'Brien via Phabricator via cfe-commits
    • [PATCH] D509... Richard Smith - zygoloid via Phabricator via cfe-commits
    • [PATCH] D509... Steve O'Brien via Phabricator via cfe-commits
    • [PATCH] D509... Steve O'Brien via Phabricator via cfe-commits
    • [PATCH] D509... Steve O'Brien via Phabricator via cfe-commits

Reply via email to