public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c++/101500] New: gcc accepts the code with extra curly braces
@ 2021-07-18 21:28 fchelnokov at gmail dot com
  2021-07-19 10:36 ` [Bug c++/101500] [9/10/11/12 Regression] " redi at gcc dot gnu.org
                   ` (4 more replies)
  0 siblings, 5 replies; 6+ messages in thread
From: fchelnokov at gmail dot com @ 2021-07-18 21:28 UTC (permalink / raw)
  To: gcc-bugs

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

            Bug ID: 101500
           Summary: gcc accepts the code with extra curly braces
           Product: gcc
           Version: 11.1.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: fchelnokov at gmail dot com
  Target Milestone: ---

The following ill-formed code is the illustration
```
struct A
{
    A() {}
    A( A&& ) = delete;
    ~A() {}
};

int main() {
    const A a = {{A{}}}; //error line
}
```
https://gcc.godbolt.org/z/eq5WhTfz3

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

* [Bug c++/101500] [9/10/11/12 Regression] gcc accepts the code with extra curly braces
  2021-07-18 21:28 [Bug c++/101500] New: gcc accepts the code with extra curly braces fchelnokov at gmail dot com
@ 2021-07-19 10:36 ` redi at gcc dot gnu.org
  2021-07-19 11:50 ` rguenth at gcc dot gnu.org
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: redi at gcc dot gnu.org @ 2021-07-19 10:36 UTC (permalink / raw)
  To: gcc-bugs

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

Jonathan Wakely <redi at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
      Known to fail|                            |10.3.0, 11.1.0, 12.0,
                   |                            |8.1.0, 9.4.0
                 CC|                            |jason at gcc dot gnu.org
      Known to work|                            |7.5.0
   Last reconfirmed|                            |2021-07-19
     Ever confirmed|0                           |1
            Summary|gcc accepts the code with   |[9/10/11/12 Regression] gcc
                   |extra curly braces          |accepts the code with extra
                   |                            |curly braces
             Status|UNCONFIRMED                 |NEW

--- Comment #1 from Jonathan Wakely <redi at gcc dot gnu.org> ---
EDG v6.2 also accepts this, but Clang and MSVC don't.

GCC started to accept it at:

    PR c++/85092 - C++17 ICE with unused list constructor.

            * call.c (conv_binds_ref_to_prvalue): Also count ck_identity
            from a TARGET_EXPR.

    From-SVN: r259052


I'll confirm it as a regression, since it doesn't look like that intended to
change this case.

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

* [Bug c++/101500] [9/10/11/12 Regression] gcc accepts the code with extra curly braces
  2021-07-18 21:28 [Bug c++/101500] New: gcc accepts the code with extra curly braces fchelnokov at gmail dot com
  2021-07-19 10:36 ` [Bug c++/101500] [9/10/11/12 Regression] " redi at gcc dot gnu.org
@ 2021-07-19 11:50 ` rguenth at gcc dot gnu.org
  2022-01-20 12:43 ` rguenth at gcc dot gnu.org
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: rguenth at gcc dot gnu.org @ 2021-07-19 11:50 UTC (permalink / raw)
  To: gcc-bugs

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

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
   Target Milestone|---                         |9.5

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

* [Bug c++/101500] [9/10/11/12 Regression] gcc accepts the code with extra curly braces
  2021-07-18 21:28 [Bug c++/101500] New: gcc accepts the code with extra curly braces fchelnokov at gmail dot com
  2021-07-19 10:36 ` [Bug c++/101500] [9/10/11/12 Regression] " redi at gcc dot gnu.org
  2021-07-19 11:50 ` rguenth at gcc dot gnu.org
@ 2022-01-20 12:43 ` rguenth at gcc dot gnu.org
  2022-04-15 15:44 ` [Bug c++/101500] [C++17] [DR2311] " jason at gcc dot gnu.org
  2022-05-27  9:06 ` rguenth at gcc dot gnu.org
  4 siblings, 0 replies; 6+ messages in thread
From: rguenth at gcc dot gnu.org @ 2022-01-20 12:43 UTC (permalink / raw)
  To: gcc-bugs

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

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Priority|P3                          |P2

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

* [Bug c++/101500] [C++17] [DR2311] gcc accepts the code with extra curly braces
  2021-07-18 21:28 [Bug c++/101500] New: gcc accepts the code with extra curly braces fchelnokov at gmail dot com
                   ` (2 preceding siblings ...)
  2022-01-20 12:43 ` rguenth at gcc dot gnu.org
@ 2022-04-15 15:44 ` jason at gcc dot gnu.org
  2022-05-27  9:06 ` rguenth at gcc dot gnu.org
  4 siblings, 0 replies; 6+ messages in thread
From: jason at gcc dot gnu.org @ 2022-04-15 15:44 UTC (permalink / raw)
  To: gcc-bugs

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

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

           What    |Removed                     |Added
----------------------------------------------------------------------------
            Summary|[9/10/11/12 Regression] gcc |[C++17] [DR2311] gcc
                   |accepts the code with extra |accepts the code with extra
                   |curly braces                |curly braces
             Status|NEW                         |SUSPENDED
                URL|                            |wg21.link/cwg2311

--- Comment #2 from Jason Merrill <jason at gcc dot gnu.org> ---
This seems like an instance of issue 2311: with C++17 mandatory copy elision,
do we really want an actual call to the move constructor in this case?  The
testcase is rejected in C++14 mode, as expected.

The standard says that we try to call a constructor, initializing the argument
with {A{}}.  So we in turn look for an A constructor to initialize the
argument, initializing its argument from A{}.  Under 2311, does this result in
still an rvalue?  And the enclosing constructor call, still the same rvalue?

This seems parallel to

const A a = A(A(A()));

which is also accepted by clang in C++17 mode.

Perhaps we want to raise the priority of issue 2311.

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

* [Bug c++/101500] [C++17] [DR2311] gcc accepts the code with extra curly braces
  2021-07-18 21:28 [Bug c++/101500] New: gcc accepts the code with extra curly braces fchelnokov at gmail dot com
                   ` (3 preceding siblings ...)
  2022-04-15 15:44 ` [Bug c++/101500] [C++17] [DR2311] " jason at gcc dot gnu.org
@ 2022-05-27  9:06 ` rguenth at gcc dot gnu.org
  4 siblings, 0 replies; 6+ messages in thread
From: rguenth at gcc dot gnu.org @ 2022-05-27  9:06 UTC (permalink / raw)
  To: gcc-bugs

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

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
   Target Milestone|9.5                         |---

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

end of thread, other threads:[~2022-05-27  9:06 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-07-18 21:28 [Bug c++/101500] New: gcc accepts the code with extra curly braces fchelnokov at gmail dot com
2021-07-19 10:36 ` [Bug c++/101500] [9/10/11/12 Regression] " redi at gcc dot gnu.org
2021-07-19 11:50 ` rguenth at gcc dot gnu.org
2022-01-20 12:43 ` rguenth at gcc dot gnu.org
2022-04-15 15:44 ` [Bug c++/101500] [C++17] [DR2311] " jason at gcc dot gnu.org
2022-05-27  9:06 ` rguenth 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).