public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c++/33955]  New: internal compiler error: in dependent_type_p, at cp/pt.c:15245 (vararg template problem)
@ 2007-10-31  5:55 eric dot niebler at gmail dot com
  2007-10-31  5:56 ` [Bug c++/33955] " eric dot niebler at gmail dot com
                   ` (5 more replies)
  0 siblings, 6 replies; 7+ messages in thread
From: eric dot niebler at gmail dot com @ 2007-10-31  5:55 UTC (permalink / raw)
  To: gcc-bugs

Compile the attached preprocessed file with "g++ -std=c++0x -c -x c++ bug.i".
The compiler ICEs. Seems to be a problem with template varargs.

This is with the latest g++, built from svn on 10/30/2007, with some patches
from Doug Gregor for various problems.


-- 
           Summary: internal compiler error: in dependent_type_p, at
                    cp/pt.c:15245 (vararg template problem)
           Product: gcc
           Version: 4.3.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: eric dot niebler at gmail dot com


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33955


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

* [Bug c++/33955] internal compiler error: in dependent_type_p, at cp/pt.c:15245 (vararg template problem)
  2007-10-31  5:55 [Bug c++/33955] New: internal compiler error: in dependent_type_p, at cp/pt.c:15245 (vararg template problem) eric dot niebler at gmail dot com
@ 2007-10-31  5:56 ` eric dot niebler at gmail dot com
  2007-10-31 12:10 ` dgregor at gcc dot gnu dot org
                   ` (4 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: eric dot niebler at gmail dot com @ 2007-10-31  5:56 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #1 from eric dot niebler at gmail dot com  2007-10-31 05:56 -------
Created an attachment (id=14446)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=14446&action=view)
preprocessed source code


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33955


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

* [Bug c++/33955] internal compiler error: in dependent_type_p, at cp/pt.c:15245 (vararg template problem)
  2007-10-31  5:55 [Bug c++/33955] New: internal compiler error: in dependent_type_p, at cp/pt.c:15245 (vararg template problem) eric dot niebler at gmail dot com
  2007-10-31  5:56 ` [Bug c++/33955] " eric dot niebler at gmail dot com
@ 2007-10-31 12:10 ` dgregor at gcc dot gnu dot org
  2007-10-31 12:23 ` dgregor at gcc dot gnu dot org
                   ` (3 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: dgregor at gcc dot gnu dot org @ 2007-10-31 12:10 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #2 from dgregor at gcc dot gnu dot org  2007-10-31 12:09 -------
I can duplicate this locally. Here's a smaller test case:

template<typename T>
struct uncvref
{
  typedef T type;
};

template<typename... Args>
struct args
{
  static const int size = sizeof...(Args);
};

template<typename G, typename E, typename S, typename V, long GN = G::size,
long EN = E::size>
struct apply_args;

template<typename... G, typename... E, typename S, typename V, long N>
struct apply_args<args<G...>, args<E...>, S, V, N, N>
{
  typedef args<
    typename G::template apply<typename uncvref<E>::type, S, V>::type...
    > type;
};

struct or_
{
  template<typename E, typename S, typename V>
  struct apply {
    typedef typename E::type type;
  };
};

template<typename T>
struct identity
{
  typedef T type;
};

apply_args<args<or_>, args<identity<int>>, float, double> a1;

I'm working on a fix now.


-- 

dgregor at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
         AssignedTo|unassigned at gcc dot gnu   |dgregor at gcc dot gnu dot
                   |dot org                     |org
             Status|UNCONFIRMED                 |ASSIGNED
     Ever Confirmed|0                           |1
   Last reconfirmed|0000-00-00 00:00:00         |2007-10-31 12:09:52
               date|                            |


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33955


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

* [Bug c++/33955] internal compiler error: in dependent_type_p, at cp/pt.c:15245 (vararg template problem)
  2007-10-31  5:55 [Bug c++/33955] New: internal compiler error: in dependent_type_p, at cp/pt.c:15245 (vararg template problem) eric dot niebler at gmail dot com
  2007-10-31  5:56 ` [Bug c++/33955] " eric dot niebler at gmail dot com
  2007-10-31 12:10 ` dgregor at gcc dot gnu dot org
@ 2007-10-31 12:23 ` dgregor at gcc dot gnu dot org
  2007-11-02  3:27 ` dgregor at gcc dot gnu dot org
                   ` (2 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: dgregor at gcc dot gnu dot org @ 2007-10-31 12:23 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #3 from dgregor at gcc dot gnu dot org  2007-10-31 12:23 -------
This tiny patch should fix the problem. We weren't digging into TYPENAME_TYPEs
deep enough to find all of the parameter packs. The patch fixes both the
original test case and the reduced one. However, I can't test it in isolation
at the moment.

Index: pt.c
===================================================================
--- pt.c        (revision 129773)
+++ pt.c        (working copy)
@@ -2505,6 +2505,12 @@ find_parameter_packs_r (tree *tp, int *w
       *walk_subtrees = 0;
       return NULL_TREE;

+    case TYPENAME_TYPE:
+      cp_walk_tree (&TYPENAME_TYPE_FULLNAME (t), &find_parameter_packs_r,
+                   ppd, ppd->visited);
+      *walk_subtrees = 0;
+      return NULL_TREE;
+
     case TYPE_PACK_EXPANSION:
     case EXPR_PACK_EXPANSION:
       *walk_subtrees = 0;


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33955


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

* [Bug c++/33955] internal compiler error: in dependent_type_p, at cp/pt.c:15245 (vararg template problem)
  2007-10-31  5:55 [Bug c++/33955] New: internal compiler error: in dependent_type_p, at cp/pt.c:15245 (vararg template problem) eric dot niebler at gmail dot com
                   ` (2 preceding siblings ...)
  2007-10-31 12:23 ` dgregor at gcc dot gnu dot org
@ 2007-11-02  3:27 ` dgregor at gcc dot gnu dot org
  2007-11-02  3:31 ` dgregor at gcc dot gnu dot org
  2007-11-19  4:49 ` pinskia at gcc dot gnu dot org
  5 siblings, 0 replies; 7+ messages in thread
From: dgregor at gcc dot gnu dot org @ 2007-11-02  3:27 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #4 from dgregor at gcc dot gnu dot org  2007-11-02 03:26 -------
Subject: Bug 33955

Author: dgregor
Date: Fri Nov  2 03:26:46 2007
New Revision: 129843

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=129843
Log:
2007-11-01  Douglas Gregor  <doug.gregor@gmail.com>

        PR c++/33955
        * pt.c (find_parameter_packs_r): Handle TYPENAME_TYPE.

2007-11-01  Douglas Gregor  <doug.gregor@gmail.com>

        * g++.dg/cpp0x/pr33955.C: New.




Added:
    trunk/gcc/testsuite/g++.dg/cpp0x/pr33955.C
Modified:
    trunk/gcc/cp/ChangeLog
    trunk/gcc/cp/pt.c
    trunk/gcc/testsuite/ChangeLog


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33955


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

* [Bug c++/33955] internal compiler error: in dependent_type_p, at cp/pt.c:15245 (vararg template problem)
  2007-10-31  5:55 [Bug c++/33955] New: internal compiler error: in dependent_type_p, at cp/pt.c:15245 (vararg template problem) eric dot niebler at gmail dot com
                   ` (3 preceding siblings ...)
  2007-11-02  3:27 ` dgregor at gcc dot gnu dot org
@ 2007-11-02  3:31 ` dgregor at gcc dot gnu dot org
  2007-11-19  4:49 ` pinskia at gcc dot gnu dot org
  5 siblings, 0 replies; 7+ messages in thread
From: dgregor at gcc dot gnu dot org @ 2007-11-02  3:31 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #5 from dgregor at gcc dot gnu dot org  2007-11-02 03:30 -------
Fixed.


-- 

dgregor at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|ASSIGNED                    |RESOLVED
         Resolution|                            |FIXED


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33955


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

* [Bug c++/33955] internal compiler error: in dependent_type_p, at cp/pt.c:15245 (vararg template problem)
  2007-10-31  5:55 [Bug c++/33955] New: internal compiler error: in dependent_type_p, at cp/pt.c:15245 (vararg template problem) eric dot niebler at gmail dot com
                   ` (4 preceding siblings ...)
  2007-11-02  3:31 ` dgregor at gcc dot gnu dot org
@ 2007-11-19  4:49 ` pinskia at gcc dot gnu dot org
  5 siblings, 0 replies; 7+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2007-11-19  4:49 UTC (permalink / raw)
  To: gcc-bugs



-- 

pinskia at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
   Target Milestone|---                         |4.3.0


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33955


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

end of thread, other threads:[~2007-11-19  4:49 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2007-10-31  5:55 [Bug c++/33955] New: internal compiler error: in dependent_type_p, at cp/pt.c:15245 (vararg template problem) eric dot niebler at gmail dot com
2007-10-31  5:56 ` [Bug c++/33955] " eric dot niebler at gmail dot com
2007-10-31 12:10 ` dgregor at gcc dot gnu dot org
2007-10-31 12:23 ` dgregor at gcc dot gnu dot org
2007-11-02  3:27 ` dgregor at gcc dot gnu dot org
2007-11-02  3:31 ` dgregor at gcc dot gnu dot org
2007-11-19  4:49 ` pinskia at gcc dot gnu dot 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).