public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c++/107741] New: Missed member variable name in mangling of externally visible lambdas used in inline initialization of static members
@ 2022-11-18  1:05 dblaikie at gmail dot com
  2022-11-18  1:08 ` [Bug c++/107741] " dblaikie at gmail dot com
  2023-03-07  6:32 ` dblaikie at gmail dot com
  0 siblings, 2 replies; 3+ messages in thread
From: dblaikie at gmail dot com @ 2022-11-18  1:05 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107741

            Bug ID: 107741
           Summary: Missed member variable name in mangling of externally
                    visible lambdas used in inline initialization of
                    static members
           Product: gcc
           Version: 13.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: dblaikie at gmail dot com
  Target Milestone: ---

https://godbolt.org/z/7514cTh5o
```
struct A {
    static constexpr auto x = [] {
        return 1;
    };
};
template <typename>
struct B {
    static constexpr auto x = [] {
        return 1;
    };
};
template <typename T>
struct C {
    static int x;
};
void side_effect();
template <typename T>
int C<T>::x = (side_effect(), [] { return 1; }());
template int C<int>::x;
void f() {
    A::x();
    B<int>::x();
}
```
GCC produces these manglings:
```
A::{lambda()#1}::operator()() const
_ZNK1AUlvE_clEv

B<int>::{lambda()#3}::operator()() const
_ZNK1BIiEUlvE1_clEv

C<int>::x::{lambda()#1}::operator()() const
_ZNK1CIiE1xMUlvE_clEv
```

I believe in the first two cases, the member variable scope ("::x") is missing.

Oh, and it looks like the lambda numbering is off - B's lambda is 1 within its
scope (either the type or the member) - so I guess that needs to be fixed
too/scoping the numbering to within the member along with the mangling having
that scoping.

^ permalink raw reply	[flat|nested] 3+ messages in thread

* [Bug c++/107741] Missed member variable name in mangling of externally visible lambdas used in inline initialization of static members
  2022-11-18  1:05 [Bug c++/107741] New: Missed member variable name in mangling of externally visible lambdas used in inline initialization of static members dblaikie at gmail dot com
@ 2022-11-18  1:08 ` dblaikie at gmail dot com
  2023-03-07  6:32 ` dblaikie at gmail dot com
  1 sibling, 0 replies; 3+ messages in thread
From: dblaikie at gmail dot com @ 2022-11-18  1:08 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107741

--- Comment #1 from David Blaikie <dblaikie at gmail dot com> ---
Oh, some context - discovered while investigating a related clang bug:
https://github.com/llvm/llvm-project/issues/58819 - so don't check clang for an
example of what's right here, it has different bugs, though I've sent a fix for
that for review.

^ permalink raw reply	[flat|nested] 3+ messages in thread

* [Bug c++/107741] Missed member variable name in mangling of externally visible lambdas used in inline initialization of static members
  2022-11-18  1:05 [Bug c++/107741] New: Missed member variable name in mangling of externally visible lambdas used in inline initialization of static members dblaikie at gmail dot com
  2022-11-18  1:08 ` [Bug c++/107741] " dblaikie at gmail dot com
@ 2023-03-07  6:32 ` dblaikie at gmail dot com
  1 sibling, 0 replies; 3+ messages in thread
From: dblaikie at gmail dot com @ 2023-03-07  6:32 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107741

--- Comment #2 from David Blaikie <dblaikie at gmail dot com> ---
Ping on this? Would love it if someone could check my work/confirm my
diagnosis, even if it's not a priority to fix the bug immediately.

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2023-03-07  6:32 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-11-18  1:05 [Bug c++/107741] New: Missed member variable name in mangling of externally visible lambdas used in inline initialization of static members dblaikie at gmail dot com
2022-11-18  1:08 ` [Bug c++/107741] " dblaikie at gmail dot com
2023-03-07  6:32 ` dblaikie at gmail dot com

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).