[PATCH] D138247: PR58819: Correct linkage and mangling of lambdas in inline static member initializers

David Blaikie via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Mon Mar 27 17:01:44 PDT 2023


dblaikie added a comment.

In D138247#4217189 <https://reviews.llvm.org/D138247#4217189>, @efriedma wrote:

> The relevant text of the current Itanium ABI (which was updated in https://github.com/itanium-cxx-abi/cxx-abi/commit/d8e9d102c83f177970f0db6cc8bee170f2779bc1)
>
>> In the following contexts, however, the one-definition rule requires closure types in different translation units to "correspond":
>>
>> - default arguments appearing in class definitions
>> - default member initializers
>> - the bodies of inline or templated functions
>> - the initializers of inline or templated variables
>
> Could you update the references to the ABI document to use the new text?

Oh, yeah - good call. Done.

> Given the new rules, I think ContextKind::StaticDataMember shouldn't exist?  It's not one of the given categories; should be subsumed by the existing categories.

Fair - I assume the "initializers of inline or templated variables" is intended to cover the case of static member variables of class templates, though they aren't technically variable templates presumably they are "templated variables".

So I renamed the `VariableTemplate` kind to `TemplatedVariable` to match the ABI wording/semantics a bit better.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D138247/new/

https://reviews.llvm.org/D138247



More information about the cfe-commits mailing list