[cfe-dev] Issue where Lambda capture of reference to globals doesn't actually capture anything

Arthur O'Dwyer via cfe-dev cfe-dev at lists.llvm.org
Mon Oct 26 10:46:22 PDT 2020


I confirm that this is a Clang bug, going back at least to Clang 6.  I
don't know if it's been reported on bugs.llvm.org yet.
https://godbolt.org/z/8419ss
It doesn't matter whether the capture is done as [=] or as [x]. Doing it
explicitly as [x=x] is a possible workaround.

–Arthur


On Mon, Oct 26, 2020 at 1:26 PM Lewis, Cannada via cfe-dev <
cfe-dev at lists.llvm.org> wrote:

> Hello,
>
> We recently encountered an issue where clang has some unexpected behavior
> with respect to the capture of local references to global variables
> https://godbolt.org/z/KasP9K.
>
> Most compilers (gcc, MSVC, icc) appear to create a member variable to hold
> the value of `myfoo` and have `dummy` return a size of 16.  Clang does not
> store a member for `myfoo` (in the AST there is no `FieldDecl` for
> `myfoo`).
>
> This leads to the interesting issue here: https://godbolt.org/z/G59e7M
> Where clang and gcc will print out different values.
>
> I don’t know if this is a clang issue (known?), or a {gcc,icc,msvc} issue,
> or is implementation defined, but any insight on this would be welcome.
>
> -Drew
> _______________________________________________
> cfe-dev mailing list
> cfe-dev at lists.llvm.org
> https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20201026/c0ccf111/attachment.html>


More information about the cfe-dev mailing list