[Bug c++/85049] [8 Regression] Internal compiler error with __integer_pack

2018-03-26 Thread jason at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85049

Jason Merrill  changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution|--- |FIXED

--- Comment #5 from Jason Merrill  ---
Fixed.

[Bug c++/85049] [8 Regression] Internal compiler error with __integer_pack

2018-03-26 Thread jason at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85049

--- Comment #4 from Jason Merrill  ---
Author: jason
Date: Mon Mar 26 14:37:50 2018
New Revision: 258856

URL: https://gcc.gnu.org/viewcvs?rev=258856&root=gcc&view=rev
Log:
PR c++/85049 - ICE with __integer_pack.

* pt.c (unify_pack_expansion): Don't try to deduce generated packs.
* cp-tree.h (TEMPLATE_PARM_P): New.

Added:
trunk/gcc/testsuite/g++.dg/ext/integer-pack3.C
Modified:
trunk/gcc/cp/ChangeLog
trunk/gcc/cp/cp-tree.h
trunk/gcc/cp/pt.c

[Bug c++/85049] [8 Regression] Internal compiler error with __integer_pack

2018-03-23 Thread jason at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85049

Jason Merrill  changed:

   What|Removed |Added

 Status|NEW |ASSIGNED
   Assignee|unassigned at gcc dot gnu.org  |jason at gcc dot gnu.org

[Bug c++/85049] [8 Regression] Internal compiler error with __integer_pack

2018-03-23 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85049

Jakub Jelinek  changed:

   What|Removed |Added

   Priority|P3  |P1
 CC||jakub at gcc dot gnu.org,
   ||jason at gcc dot gnu.org,
   ||redi at gcc dot gnu.org
   Target Milestone|--- |8.0
Summary|Internal compiler error |[8 Regression] Internal
   |with __integer_pack |compiler error with
   ||__integer_pack

--- Comment #3 from Jakub Jelinek  ---
__integer_pack is a builtin template introduced in r248384 and introduced into
libstdc++ with r252923.
Testcase that matches exactly what libstdc++ does for index_sequence_for:

typedef __SIZE_TYPE__ size_t;
template
struct integer_sequence
{
  typedef _Tp value_type;
  static constexpr size_t size() noexcept { return sizeof...(_Idx); }
};
template
using make_integer_sequence = integer_sequence<_Tp, __integer_pack(_Num)...>;
template
using make_index_sequence = make_integer_sequence;
template
using index_sequence_for = make_index_sequence;
template 
struct tuple {};
template 
int get(tuple, Ts...>);
int x = get(tuple>{});

and this ICEs without any errors.
#include 
template 
struct tuple {};
template 
int get(tuple, Ts...>);
int x = get(tuple>{});
is accepted by 7.x and thus this is a regression from 7.x.