public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c++/51723] New: [C++0x] delegating constructor ICE
@ 2011-12-31 22:51 andyg1001 at hotmail dot co.uk
2012-01-01 0:01 ` [Bug c++/51723] " paolo.carlini at oracle dot com
` (6 more replies)
0 siblings, 7 replies; 8+ messages in thread
From: andyg1001 at hotmail dot co.uk @ 2011-12-31 22:51 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51723
Bug #: 51723
Summary: [C++0x] delegating constructor ICE
Classification: Unclassified
Product: gcc
Version: 4.7.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
AssignedTo: unassigned@gcc.gnu.org
ReportedBy: andyg1001@hotmail.co.uk
The following reduced code generates an ICE in gcc version 4.7.0 20111219:
template <int... V>
struct A
{
static constexpr int a[sizeof...(V)] = { V... };
};
template <int... V> constexpr int A<V...>::a[];
struct B
{
const int* const b;
template <unsigned int N>
constexpr B(const int(&b)[N])
: b(b)
{ }
template <int... V>
constexpr B(A<V...>)
: B(A<V...>::a) /* replace 'B' with 'b' to compile without ICE */
{ }
};
constexpr B works = A<10, 20, 30>::a; /* uses first ctor */
constexpr B causes_ice = A<10, 20, 30>(); /* uses second ctor */
The ICE occurs around the delegating constructor, but the code compiles
correctly if it is substituted for a non-delegating form of the constructor.
The message from gcc is:
ice.cpp: In instantiation of 'constexpr B::B(A<V ...>) [with int ...V = {10,
20, 30}]':
ice.cpp:25:40: required from here
ice.cpp:21:7: internal compiler error: in build_data_member_initialization, at
cp/semantics.c:5844
Please submit a full bug report,
with preprocessed source if appropriate.
^ permalink raw reply [flat|nested] 8+ messages in thread
* [Bug c++/51723] [C++0x] delegating constructor ICE
2011-12-31 22:51 [Bug c++/51723] New: [C++0x] delegating constructor ICE andyg1001 at hotmail dot co.uk
@ 2012-01-01 0:01 ` paolo.carlini at oracle dot com
2012-01-01 13:06 ` andyg1001 at hotmail dot co.uk
` (5 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: paolo.carlini at oracle dot com @ 2012-01-01 0:01 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51723
Paolo Carlini <paolo.carlini at oracle dot com> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |WAITING
Last reconfirmed| |2012-01-01
CC|andyg1001 at hotmail dot |
|co.uk |
Ever Confirmed|0 |1
--- Comment #1 from Paolo Carlini <paolo.carlini at oracle dot com> 2012-01-01 00:01:25 UTC ---
This works for me with today's (Rev 182761) GCC. Can you double check? I mean
to add the testcase and close the PR.
^ permalink raw reply [flat|nested] 8+ messages in thread
* [Bug c++/51723] [C++0x] delegating constructor ICE
2011-12-31 22:51 [Bug c++/51723] New: [C++0x] delegating constructor ICE andyg1001 at hotmail dot co.uk
2012-01-01 0:01 ` [Bug c++/51723] " paolo.carlini at oracle dot com
@ 2012-01-01 13:06 ` andyg1001 at hotmail dot co.uk
2012-01-01 13:10 ` paolo.carlini at oracle dot com
` (4 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: andyg1001 at hotmail dot co.uk @ 2012-01-01 13:06 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51723
--- Comment #2 from andyg1001 at hotmail dot co.uk 2012-01-01 13:05:50 UTC ---
I have double-checked and, yes, it does work in the latest revision from trunk
- sorry, I ought to have checked that first.
^ permalink raw reply [flat|nested] 8+ messages in thread
* [Bug c++/51723] [C++0x] delegating constructor ICE
2011-12-31 22:51 [Bug c++/51723] New: [C++0x] delegating constructor ICE andyg1001 at hotmail dot co.uk
2012-01-01 0:01 ` [Bug c++/51723] " paolo.carlini at oracle dot com
2012-01-01 13:06 ` andyg1001 at hotmail dot co.uk
@ 2012-01-01 13:10 ` paolo.carlini at oracle dot com
2012-01-01 13:32 ` paolo at gcc dot gnu.org
` (3 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: paolo.carlini at oracle dot com @ 2012-01-01 13:10 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51723
Paolo Carlini <paolo.carlini at oracle dot com> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|WAITING |NEW
--- Comment #3 from Paolo Carlini <paolo.carlini at oracle dot com> 2012-01-01 13:10:33 UTC ---
No problem, thanks.
^ permalink raw reply [flat|nested] 8+ messages in thread
* [Bug c++/51723] [C++0x] delegating constructor ICE
2011-12-31 22:51 [Bug c++/51723] New: [C++0x] delegating constructor ICE andyg1001 at hotmail dot co.uk
` (2 preceding siblings ...)
2012-01-01 13:10 ` paolo.carlini at oracle dot com
@ 2012-01-01 13:32 ` paolo at gcc dot gnu.org
2012-01-01 13:34 ` paolo.carlini at oracle dot com
` (2 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: paolo at gcc dot gnu.org @ 2012-01-01 13:32 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51723
--- Comment #4 from paolo at gcc dot gnu.org <paolo at gcc dot gnu.org> 2012-01-01 13:31:51 UTC ---
Author: paolo
Date: Sun Jan 1 13:31:48 2012
New Revision: 182768
URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=182768
Log:
2012-01-01 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/51723
* g++.dg/cpp0x/constexpr-delegating2.C: New.
Added:
trunk/gcc/testsuite/g++.dg/cpp0x/constexpr-delegating2.C
Modified:
trunk/gcc/testsuite/ChangeLog
^ permalink raw reply [flat|nested] 8+ messages in thread
* [Bug c++/51723] [C++0x] delegating constructor ICE
2011-12-31 22:51 [Bug c++/51723] New: [C++0x] delegating constructor ICE andyg1001 at hotmail dot co.uk
` (3 preceding siblings ...)
2012-01-01 13:32 ` paolo at gcc dot gnu.org
@ 2012-01-01 13:34 ` paolo.carlini at oracle dot com
2012-01-01 15:26 ` andyg1001 at hotmail dot co.uk
2012-01-01 18:30 ` paolo.carlini at oracle dot com
6 siblings, 0 replies; 8+ messages in thread
From: paolo.carlini at oracle dot com @ 2012-01-01 13:34 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51723
Paolo Carlini <paolo.carlini at oracle dot com> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |RESOLVED
Resolution| |FIXED
--- Comment #5 from Paolo Carlini <paolo.carlini at oracle dot com> 2012-01-01 13:34:18 UTC ---
By the way, this is most likely a duplicate of PR51526, but an additional
testcase for this recent feature cannot hurt. Thanks again.
^ permalink raw reply [flat|nested] 8+ messages in thread
* [Bug c++/51723] [C++0x] delegating constructor ICE
2011-12-31 22:51 [Bug c++/51723] New: [C++0x] delegating constructor ICE andyg1001 at hotmail dot co.uk
` (4 preceding siblings ...)
2012-01-01 13:34 ` paolo.carlini at oracle dot com
@ 2012-01-01 15:26 ` andyg1001 at hotmail dot co.uk
2012-01-01 18:30 ` paolo.carlini at oracle dot com
6 siblings, 0 replies; 8+ messages in thread
From: andyg1001 at hotmail dot co.uk @ 2012-01-01 15:26 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51723
--- Comment #6 from andyg1001 at hotmail dot co.uk 2012-01-01 15:25:50 UTC ---
As a suggestion, the test case added in commit
http://gcc.gnu.org/viewcvs?view=revision&revision=182768 should have the
additional two lines:
constexpr B b1 = A<10, 20, 30>::a;
constexpr B b2 = A<10, 20, 30>();
since these actually *cause* the ICE in the initial post. (These two lines
were part of the initial post.)
^ permalink raw reply [flat|nested] 8+ messages in thread
* [Bug c++/51723] [C++0x] delegating constructor ICE
2011-12-31 22:51 [Bug c++/51723] New: [C++0x] delegating constructor ICE andyg1001 at hotmail dot co.uk
` (5 preceding siblings ...)
2012-01-01 15:26 ` andyg1001 at hotmail dot co.uk
@ 2012-01-01 18:30 ` paolo.carlini at oracle dot com
6 siblings, 0 replies; 8+ messages in thread
From: paolo.carlini at oracle dot com @ 2012-01-01 18:30 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51723
--- Comment #7 from Paolo Carlini <paolo.carlini at oracle dot com> 2012-01-01 18:30:08 UTC ---
Oops, you are right, will do.
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2012-01-01 18:30 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-12-31 22:51 [Bug c++/51723] New: [C++0x] delegating constructor ICE andyg1001 at hotmail dot co.uk
2012-01-01 0:01 ` [Bug c++/51723] " paolo.carlini at oracle dot com
2012-01-01 13:06 ` andyg1001 at hotmail dot co.uk
2012-01-01 13:10 ` paolo.carlini at oracle dot com
2012-01-01 13:32 ` paolo at gcc dot gnu.org
2012-01-01 13:34 ` paolo.carlini at oracle dot com
2012-01-01 15:26 ` andyg1001 at hotmail dot co.uk
2012-01-01 18:30 ` paolo.carlini at oracle 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).