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