public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c++/115645] New: [11/12/13/14/15 Regression] new S[1][1]() requires non-explicit default ctor since r11-3092
@ 2024-06-25 13:02 redi at gcc dot gnu.org
2024-06-25 13:06 ` [Bug c++/115645] " redi at gcc dot gnu.org
` (10 more replies)
0 siblings, 11 replies; 12+ messages in thread
From: redi at gcc dot gnu.org @ 2024-06-25 13:02 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115645
Bug ID: 115645
Summary: [11/12/13/14/15 Regression] new S[1][1]() requires
non-explicit default ctor since r11-3092
Product: gcc
Version: 15.0
Status: UNCONFIRMED
Keywords: rejects-valid
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: redi at gcc dot gnu.org
CC: mpolacek at gcc dot gnu.org
Target Milestone: ---
struct S {
explicit S() { }
};
auto p = new S[1][1]();
expl.cc:5:22: error: converting to ‘S’ from initializer list would use explicit
constructor ‘S::S()’
5 | auto p = new S[1][1]();
| ^
Clang and EDG accept this.
^ permalink raw reply [flat|nested] 12+ messages in thread
* [Bug c++/115645] [11/12/13/14/15 Regression] new S[1][1]() requires non-explicit default ctor since r11-3092
2024-06-25 13:02 [Bug c++/115645] New: [11/12/13/14/15 Regression] new S[1][1]() requires non-explicit default ctor since r11-3092 redi at gcc dot gnu.org
@ 2024-06-25 13:06 ` redi at gcc dot gnu.org
2024-06-25 13:07 ` redi at gcc dot gnu.org
` (9 subsequent siblings)
10 siblings, 0 replies; 12+ messages in thread
From: redi at gcc dot gnu.org @ 2024-06-25 13:06 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115645
Jonathan Wakely <redi at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Known to work| |10.5.0
Known to fail| |11.1.0, 11.4.0, 12.3.0,
| |13.3.0, 14.1.0, 15.0
--- Comment #1 from Jonathan Wakely <redi at gcc dot gnu.org> ---
LWG just approved a change to the standard which requires this to work:
https://cplusplus.github.io/LWG/issue3436
^ permalink raw reply [flat|nested] 12+ messages in thread
* [Bug c++/115645] [11/12/13/14/15 Regression] new S[1][1]() requires non-explicit default ctor since r11-3092
2024-06-25 13:02 [Bug c++/115645] New: [11/12/13/14/15 Regression] new S[1][1]() requires non-explicit default ctor since r11-3092 redi at gcc dot gnu.org
2024-06-25 13:06 ` [Bug c++/115645] " redi at gcc dot gnu.org
@ 2024-06-25 13:07 ` redi at gcc dot gnu.org
2024-06-25 14:14 ` rguenth at gcc dot gnu.org
` (8 subsequent siblings)
10 siblings, 0 replies; 12+ messages in thread
From: redi at gcc dot gnu.org @ 2024-06-25 13:07 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115645
--- Comment #2 from Jonathan Wakely <redi at gcc dot gnu.org> ---
(although an explicit default ctor is unusual, so it's not going to really
affect anybody in practice)
^ permalink raw reply [flat|nested] 12+ messages in thread
* [Bug c++/115645] [11/12/13/14/15 Regression] new S[1][1]() requires non-explicit default ctor since r11-3092
2024-06-25 13:02 [Bug c++/115645] New: [11/12/13/14/15 Regression] new S[1][1]() requires non-explicit default ctor since r11-3092 redi at gcc dot gnu.org
2024-06-25 13:06 ` [Bug c++/115645] " redi at gcc dot gnu.org
2024-06-25 13:07 ` redi at gcc dot gnu.org
@ 2024-06-25 14:14 ` rguenth at gcc dot gnu.org
2024-06-25 14:58 ` mpolacek at gcc dot gnu.org
` (7 subsequent siblings)
10 siblings, 0 replies; 12+ messages in thread
From: rguenth at gcc dot gnu.org @ 2024-06-25 14:14 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115645
Richard Biener <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Target Milestone|--- |11.5
^ permalink raw reply [flat|nested] 12+ messages in thread
* [Bug c++/115645] [11/12/13/14/15 Regression] new S[1][1]() requires non-explicit default ctor since r11-3092
2024-06-25 13:02 [Bug c++/115645] New: [11/12/13/14/15 Regression] new S[1][1]() requires non-explicit default ctor since r11-3092 redi at gcc dot gnu.org
` (2 preceding siblings ...)
2024-06-25 14:14 ` rguenth at gcc dot gnu.org
@ 2024-06-25 14:58 ` mpolacek at gcc dot gnu.org
2024-07-10 16:36 ` cvs-commit at gcc dot gnu.org
` (6 subsequent siblings)
10 siblings, 0 replies; 12+ messages in thread
From: mpolacek at gcc dot gnu.org @ 2024-06-25 14:58 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115645
Marek Polacek <mpolacek at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Last reconfirmed| |2024-06-25
Assignee|unassigned at gcc dot gnu.org |mpolacek at gcc dot gnu.org
Ever confirmed|0 |1
Status|UNCONFIRMED |ASSIGNED
^ permalink raw reply [flat|nested] 12+ messages in thread
* [Bug c++/115645] [11/12/13/14/15 Regression] new S[1][1]() requires non-explicit default ctor since r11-3092
2024-06-25 13:02 [Bug c++/115645] New: [11/12/13/14/15 Regression] new S[1][1]() requires non-explicit default ctor since r11-3092 redi at gcc dot gnu.org
` (3 preceding siblings ...)
2024-06-25 14:58 ` mpolacek at gcc dot gnu.org
@ 2024-07-10 16:36 ` cvs-commit at gcc dot gnu.org
2024-07-10 16:38 ` [Bug c++/115645] [11/12/13/14 " mpolacek at gcc dot gnu.org
` (5 subsequent siblings)
10 siblings, 0 replies; 12+ messages in thread
From: cvs-commit at gcc dot gnu.org @ 2024-07-10 16:36 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115645
--- Comment #3 from GCC Commits <cvs-commit at gcc dot gnu.org> ---
The trunk branch has been updated by Marek Polacek <mpolacek@gcc.gnu.org>:
https://gcc.gnu.org/g:fde96e8205f343e6471a11cc9def967bb5dd5362
commit r15-1946-gfde96e8205f343e6471a11cc9def967bb5dd5362
Author: Marek Polacek <polacek@redhat.com>
Date: Tue Jul 2 15:22:39 2024 -0400
c++: array new with value-initialization [PR115645]
This extends the r11-5179 fix which doesn't work with multidimensional
arrays. In particular,
struct S {
explicit S() { }
};
auto p = new S[1][1]();
should not say "converting to S from initializer list would use
explicit constructor" because there's no {}. However, since we
went into the block where we create a {}, we got confused. We
should not have gotten there but we did because array_p was true.
This patch refines the check once more.
PR c++/115645
gcc/cp/ChangeLog:
* init.cc (build_new): Don't do any deduction for arrays with
bounds if it's value-initialized.
gcc/testsuite/ChangeLog:
* g++.dg/expr/anew7.C: New test.
^ permalink raw reply [flat|nested] 12+ messages in thread
* [Bug c++/115645] [11/12/13/14 Regression] new S[1][1]() requires non-explicit default ctor since r11-3092
2024-06-25 13:02 [Bug c++/115645] New: [11/12/13/14/15 Regression] new S[1][1]() requires non-explicit default ctor since r11-3092 redi at gcc dot gnu.org
` (4 preceding siblings ...)
2024-07-10 16:36 ` cvs-commit at gcc dot gnu.org
@ 2024-07-10 16:38 ` mpolacek at gcc dot gnu.org
2024-07-11 22:34 ` redi at gcc dot gnu.org
` (4 subsequent siblings)
10 siblings, 0 replies; 12+ messages in thread
From: mpolacek at gcc dot gnu.org @ 2024-07-10 16:38 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115645
Marek Polacek <mpolacek at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Summary|[11/12/13/14/15 Regression] |[11/12/13/14 Regression]
|new S[1][1]() requires |new S[1][1]() requires
|non-explicit default ctor |non-explicit default ctor
|since r11-3092 |since r11-3092
--- Comment #4 from Marek Polacek <mpolacek at gcc dot gnu.org> ---
Fixed on trunk so far.
^ permalink raw reply [flat|nested] 12+ messages in thread
* [Bug c++/115645] [11/12/13/14 Regression] new S[1][1]() requires non-explicit default ctor since r11-3092
2024-06-25 13:02 [Bug c++/115645] New: [11/12/13/14/15 Regression] new S[1][1]() requires non-explicit default ctor since r11-3092 redi at gcc dot gnu.org
` (5 preceding siblings ...)
2024-07-10 16:38 ` [Bug c++/115645] [11/12/13/14 " mpolacek at gcc dot gnu.org
@ 2024-07-11 22:34 ` redi at gcc dot gnu.org
2024-07-11 22:37 ` mpolacek at gcc dot gnu.org
` (3 subsequent siblings)
10 siblings, 0 replies; 12+ messages in thread
From: redi at gcc dot gnu.org @ 2024-07-11 22:34 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115645
--- Comment #5 from Jonathan Wakely <redi at gcc dot gnu.org> ---
This has started to fail since r15-1946
using size_t = decltype(sizeof(0));
void* operator new(size_t, void* p) { return p; }
void* operator new[](size_t, void* p) { return p; }
#define VERIFY(C) if (!(C)) throw
namespace std {
template<typename T>
constexpr T* construct_at(T* p)
{
if constexpr (__is_array(T))
return ::new((void*)p) T[1]();
else
return ::new((void*)p) T();
}
}
constexpr void
test_array()
{
int arr[1] { 99 };
std::construct_at(&arr);
VERIFY( arr[0] == 0 );
union U {
long long x = -1;
int arr[4];
} u;
auto p = std::construct_at(&u.arr);
VERIFY( (*p)[0] == 0 );
}
static_assert( [] { test_array(); return true; }() );
^ permalink raw reply [flat|nested] 12+ messages in thread
* [Bug c++/115645] [11/12/13/14 Regression] new S[1][1]() requires non-explicit default ctor since r11-3092
2024-06-25 13:02 [Bug c++/115645] New: [11/12/13/14/15 Regression] new S[1][1]() requires non-explicit default ctor since r11-3092 redi at gcc dot gnu.org
` (6 preceding siblings ...)
2024-07-11 22:34 ` redi at gcc dot gnu.org
@ 2024-07-11 22:37 ` mpolacek at gcc dot gnu.org
2024-07-18 10:37 ` rguenth at gcc dot gnu.org
` (2 subsequent siblings)
10 siblings, 0 replies; 12+ messages in thread
From: mpolacek at gcc dot gnu.org @ 2024-07-11 22:37 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115645
--- Comment #6 from Marek Polacek <mpolacek at gcc dot gnu.org> ---
Sorry :(. I'll take a look.
^ permalink raw reply [flat|nested] 12+ messages in thread
* [Bug c++/115645] [11/12/13/14 Regression] new S[1][1]() requires non-explicit default ctor since r11-3092
2024-06-25 13:02 [Bug c++/115645] New: [11/12/13/14/15 Regression] new S[1][1]() requires non-explicit default ctor since r11-3092 redi at gcc dot gnu.org
` (7 preceding siblings ...)
2024-07-11 22:37 ` mpolacek at gcc dot gnu.org
@ 2024-07-18 10:37 ` rguenth at gcc dot gnu.org
2024-07-19 13:25 ` [Bug c++/115645] [12/13/14 " rguenth at gcc dot gnu.org
2024-07-31 12:50 ` cvs-commit at gcc dot gnu.org
10 siblings, 0 replies; 12+ messages in thread
From: rguenth at gcc dot gnu.org @ 2024-07-18 10:37 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115645
Richard Biener <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Priority|P3 |P2
Known to work| |15.0
Known to fail|15.0 |
^ permalink raw reply [flat|nested] 12+ messages in thread
* [Bug c++/115645] [12/13/14 Regression] new S[1][1]() requires non-explicit default ctor since r11-3092
2024-06-25 13:02 [Bug c++/115645] New: [11/12/13/14/15 Regression] new S[1][1]() requires non-explicit default ctor since r11-3092 redi at gcc dot gnu.org
` (8 preceding siblings ...)
2024-07-18 10:37 ` rguenth at gcc dot gnu.org
@ 2024-07-19 13:25 ` rguenth at gcc dot gnu.org
2024-07-31 12:50 ` cvs-commit at gcc dot gnu.org
10 siblings, 0 replies; 12+ messages in thread
From: rguenth at gcc dot gnu.org @ 2024-07-19 13:25 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115645
Richard Biener <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Target Milestone|11.5 |12.5
--- Comment #7 from Richard Biener <rguenth at gcc dot gnu.org> ---
GCC 11 branch is being closed.
^ permalink raw reply [flat|nested] 12+ messages in thread
* [Bug c++/115645] [12/13/14 Regression] new S[1][1]() requires non-explicit default ctor since r11-3092
2024-06-25 13:02 [Bug c++/115645] New: [11/12/13/14/15 Regression] new S[1][1]() requires non-explicit default ctor since r11-3092 redi at gcc dot gnu.org
` (9 preceding siblings ...)
2024-07-19 13:25 ` [Bug c++/115645] [12/13/14 " rguenth at gcc dot gnu.org
@ 2024-07-31 12:50 ` cvs-commit at gcc dot gnu.org
10 siblings, 0 replies; 12+ messages in thread
From: cvs-commit at gcc dot gnu.org @ 2024-07-31 12:50 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115645
--- Comment #8 from GCC Commits <cvs-commit at gcc dot gnu.org> ---
The trunk branch has been updated by Marek Polacek <mpolacek@gcc.gnu.org>:
https://gcc.gnu.org/g:bbc9c0423ca754e8e6ff80e08948ff52986337a0
commit r15-2435-gbbc9c0423ca754e8e6ff80e08948ff52986337a0
Author: Marek Polacek <polacek@redhat.com>
Date: Wed Jul 17 15:44:26 2024 -0400
c++: array new with value-initialization, again [PR115645]
Unfortunately, my r15-1946 fix broke the attached testcase; the
constexpr evaluation reported an error about not being able to
evaluate the code emitted by build_vec_init. Jason figured out
it's because we were wrongly setting try_const to false, where
in fact it should have been true. Value-initialization of scalars
is constexpr, so we should check that alongside of
type_has_constexpr_default_constructor.
PR c++/115645
gcc/cp/ChangeLog:
* init.cc (build_vec_init): When initializing a scalar type, try to
create a constant initializer.
gcc/testsuite/ChangeLog:
* g++.dg/cpp2a/constexpr-new23.C: New test.
^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2024-07-31 12:50 UTC | newest]
Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-06-25 13:02 [Bug c++/115645] New: [11/12/13/14/15 Regression] new S[1][1]() requires non-explicit default ctor since r11-3092 redi at gcc dot gnu.org
2024-06-25 13:06 ` [Bug c++/115645] " redi at gcc dot gnu.org
2024-06-25 13:07 ` redi at gcc dot gnu.org
2024-06-25 14:14 ` rguenth at gcc dot gnu.org
2024-06-25 14:58 ` mpolacek at gcc dot gnu.org
2024-07-10 16:36 ` cvs-commit at gcc dot gnu.org
2024-07-10 16:38 ` [Bug c++/115645] [11/12/13/14 " mpolacek at gcc dot gnu.org
2024-07-11 22:34 ` redi at gcc dot gnu.org
2024-07-11 22:37 ` mpolacek at gcc dot gnu.org
2024-07-18 10:37 ` rguenth at gcc dot gnu.org
2024-07-19 13:25 ` [Bug c++/115645] [12/13/14 " rguenth at gcc dot gnu.org
2024-07-31 12:50 ` 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).