public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c++/103337] New: rejects-valid brace elision inside designated initializer
@ 2021-11-19 19:19 ppalka at gcc dot gnu.org
  2021-11-19 19:27 ` [Bug c++/103337] " mpolacek at gcc dot gnu.org
                   ` (4 more replies)
  0 siblings, 5 replies; 6+ messages in thread
From: ppalka at gcc dot gnu.org @ 2021-11-19 19:19 UTC (permalink / raw)
  To: gcc-bugs

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

            Bug ID: 103337
           Summary: rejects-valid brace elision inside designated
                    initializer
           Product: gcc
           Version: 12.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: ppalka at gcc dot gnu.org
  Target Milestone: ---

struct op_t {
  struct put_t {
    int x;
  } put;
};

op_t x{0};       // OK
op_t y{.put=0};  // error: 'op_t::put_t' has no non-static data member named
'put'

GCC rejects the second initializer, but Clang and MSVC accept.

Doesn't appear to be a regression.

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

* [Bug c++/103337] rejects-valid brace elision inside designated initializer
  2021-11-19 19:19 [Bug c++/103337] New: rejects-valid brace elision inside designated initializer ppalka at gcc dot gnu.org
@ 2021-11-19 19:27 ` mpolacek at gcc dot gnu.org
  2022-03-21 20:47 ` cvs-commit at gcc dot gnu.org
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: mpolacek at gcc dot gnu.org @ 2021-11-19 19:27 UTC (permalink / raw)
  To: gcc-bugs

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

Marek Polacek <mpolacek at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |rejects-valid
   Last reconfirmed|                            |2021-11-19
             Status|UNCONFIRMED                 |NEW
                 CC|                            |mpolacek at gcc dot gnu.org
     Ever confirmed|0                           |1

--- Comment #1 from Marek Polacek <mpolacek at gcc dot gnu.org> ---
And
op_t z{.put={0}};
works, so confirmed.

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

* [Bug c++/103337] rejects-valid brace elision inside designated initializer
  2021-11-19 19:19 [Bug c++/103337] New: rejects-valid brace elision inside designated initializer ppalka at gcc dot gnu.org
  2021-11-19 19:27 ` [Bug c++/103337] " mpolacek at gcc dot gnu.org
@ 2022-03-21 20:47 ` cvs-commit at gcc dot gnu.org
  2022-03-21 20:55 ` jason at gcc dot gnu.org
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: cvs-commit at gcc dot gnu.org @ 2022-03-21 20:47 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #2 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Jason Merrill <jason@gcc.gnu.org>:

https://gcc.gnu.org/g:24d51e749570dcb85bd43d3b528f58ad6141de26

commit r12-7741-g24d51e749570dcb85bd43d3b528f58ad6141de26
Author: Jason Merrill <jason@redhat.com>
Date:   Mon Mar 21 09:57:28 2022 -0400

    c++: designated init and aggregate members [PR103337]

    Our C++20 designated initializer handling was broken with members of class
    type; we would find the relevant member and then try to find a member of
    the member with the same name.  Or we would sometimes ignore the designator
    entirely.  The former problem is fixed by the change to reshape_init_class,
    the latter by the change to reshape_init_r.

            PR c++/103337
            PR c++/102740
            PR c++/103299
            PR c++/102538

    gcc/cp/ChangeLog:

            * decl.cc (reshape_init_class): Avoid looking for designator
            after we found it.
            (reshape_init_r): Keep looking for designator.

    gcc/testsuite/ChangeLog:

            * g++.dg/ext/flexary3.C: Remove one error.
            * g++.dg/parse/pr43765.C: Likewise.
            * g++.dg/cpp2a/desig22.C: New test.
            * g++.dg/cpp2a/desig23.C: New test.
            * g++.dg/cpp2a/desig24.C: New test.
            * g++.dg/cpp2a/desig25.C: New test.

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

* [Bug c++/103337] rejects-valid brace elision inside designated initializer
  2021-11-19 19:19 [Bug c++/103337] New: rejects-valid brace elision inside designated initializer ppalka at gcc dot gnu.org
  2021-11-19 19:27 ` [Bug c++/103337] " mpolacek at gcc dot gnu.org
  2022-03-21 20:47 ` cvs-commit at gcc dot gnu.org
@ 2022-03-21 20:55 ` jason at gcc dot gnu.org
  2022-03-22  5:18 ` cvs-commit at gcc dot gnu.org
  2022-03-23 19:37 ` cvs-commit at gcc dot gnu.org
  4 siblings, 0 replies; 6+ messages in thread
From: jason at gcc dot gnu.org @ 2022-03-21 20:55 UTC (permalink / raw)
  To: gcc-bugs

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

Jason Merrill <jason at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |jason at gcc dot gnu.org
         Resolution|---                         |FIXED
             Status|NEW                         |RESOLVED
   Target Milestone|---                         |12.0

--- Comment #3 from Jason Merrill <jason at gcc dot gnu.org> ---
Fixed.

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

* [Bug c++/103337] rejects-valid brace elision inside designated initializer
  2021-11-19 19:19 [Bug c++/103337] New: rejects-valid brace elision inside designated initializer ppalka at gcc dot gnu.org
                   ` (2 preceding siblings ...)
  2022-03-21 20:55 ` jason at gcc dot gnu.org
@ 2022-03-22  5:18 ` cvs-commit at gcc dot gnu.org
  2022-03-23 19:37 ` cvs-commit at gcc dot gnu.org
  4 siblings, 0 replies; 6+ messages in thread
From: cvs-commit at gcc dot gnu.org @ 2022-03-22  5:18 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #4 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The releases/gcc-11 branch has been updated by Jason Merrill
<jason@gcc.gnu.org>:

https://gcc.gnu.org/g:2b2f575e6f27acc0c7ba6a3affc760bf2b96a84b

commit r11-9678-g2b2f575e6f27acc0c7ba6a3affc760bf2b96a84b
Author: Jason Merrill <jason@redhat.com>
Date:   Mon Mar 21 09:57:28 2022 -0400

    c++: designated init and aggregate members [PR103337]

    Our C++20 designated initializer handling was broken with members of class
    type; we would find the relevant member and then try to find a member of
    the member with the same name.  Or we would sometimes ignore the designator
    entirely.  The former problem is fixed by the change to reshape_init_class,
    the latter by the change to reshape_init_r.

            PR c++/103337
            PR c++/102740
            PR c++/103299
            PR c++/102538

    gcc/cp/ChangeLog:

            * decl.c (reshape_init_class): Avoid looking for designator
            after we found it.
            (reshape_init_r): Keep looking for designator.

    gcc/testsuite/ChangeLog:

            * g++.dg/ext/flexary3.C: Remove one error.
            * g++.dg/parse/pr43765.C: Likewise.
            * g++.dg/cpp2a/desig22.C: New test.
            * g++.dg/cpp2a/desig23.C: New test.
            * g++.dg/cpp2a/desig24.C: New test.
            * g++.dg/cpp2a/desig25.C: New test.

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

* [Bug c++/103337] rejects-valid brace elision inside designated initializer
  2021-11-19 19:19 [Bug c++/103337] New: rejects-valid brace elision inside designated initializer ppalka at gcc dot gnu.org
                   ` (3 preceding siblings ...)
  2022-03-22  5:18 ` cvs-commit at gcc dot gnu.org
@ 2022-03-23 19:37 ` cvs-commit at gcc dot gnu.org
  4 siblings, 0 replies; 6+ messages in thread
From: cvs-commit at gcc dot gnu.org @ 2022-03-23 19:37 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #5 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Jason Merrill <jason@gcc.gnu.org>:

https://gcc.gnu.org/g:2cd0c9a5310420e1039be5e514a818b6d381d89f

commit r12-7789-g2cd0c9a5310420e1039be5e514a818b6d381d89f
Author: Jason Merrill <jason@redhat.com>
Date:   Wed Mar 23 13:22:25 2022 -0400

    c++: tweak PR103337 fix

    Patrick suggested a way to implement the designated-init handling without
    (temporarily) modifying the CONSTRUCTOR being reshaped.

            PR c++/103337

    gcc/cp/ChangeLog:

            * decl.cc (reshape_single_init): New.
            (reshape_init_class): Use it.

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

end of thread, other threads:[~2022-03-23 19:37 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-11-19 19:19 [Bug c++/103337] New: rejects-valid brace elision inside designated initializer ppalka at gcc dot gnu.org
2021-11-19 19:27 ` [Bug c++/103337] " mpolacek at gcc dot gnu.org
2022-03-21 20:47 ` cvs-commit at gcc dot gnu.org
2022-03-21 20:55 ` jason at gcc dot gnu.org
2022-03-22  5:18 ` cvs-commit at gcc dot gnu.org
2022-03-23 19:37 ` cvs-commit at gcc dot gnu.org

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).