aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason Merrill <jason@redhat.com>2015-07-02 20:45:34 -0400
committerJason Merrill <jason@gcc.gnu.org>2015-07-02 20:45:34 -0400
commita426f31afb36abf86c161ecd47b5d8e873fe068e (patch)
tree14d8df9d5580a67c1be0fa717da92b953fa197c3
parenta3d8e94a1f9ba48334ebae69a581aabf56361d1b (diff)
downloadgcc-a426f31afb36abf86c161ecd47b5d8e873fe068e.zip
gcc-a426f31afb36abf86c161ecd47b5d8e873fe068e.tar.gz
gcc-a426f31afb36abf86c161ecd47b5d8e873fe068e.tar.bz2
re PR c++/66743 (ICE: tree check: expected record_type or union_type or qual_union_type, have underlying_type in for_each_template_parm_r, at cp/pt.c:8234)
PR c++/66743 * pt.c (for_each_template_parm_r) [UNDERLYING_TYPE]: Use TYPE_VALUES_RAW rather than TYPE_FIELDS. From-SVN: r225365
-rw-r--r--gcc/cp/ChangeLog6
-rw-r--r--gcc/cp/pt.c2
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/alias-decl-51.C9
3 files changed, 16 insertions, 1 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 12640af..c72954d 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,9 @@
+2015-07-02 Jason Merrill <jason@redhat.com>
+
+ PR c++/66743
+ * pt.c (for_each_template_parm_r) [UNDERLYING_TYPE]: Use
+ TYPE_VALUES_RAW rather than TYPE_FIELDS.
+
2015-07-02 Andrew Sutton <andrew.n.sutton@gmail.com>
* pt.c (type_dependent_expression_p): Handle expressions
diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c
index 12feeee..e819b69 100644
--- a/gcc/cp/pt.c
+++ b/gcc/cp/pt.c
@@ -8255,7 +8255,7 @@ for_each_template_parm_r (tree *tp, int *walk_subtrees, void *d)
case TYPEOF_TYPE:
case UNDERLYING_TYPE:
if (pfd->include_nondeduced_p
- && for_each_template_parm (TYPE_FIELDS (t), fn, data,
+ && for_each_template_parm (TYPE_VALUES_RAW (t), fn, data,
pfd->visited,
pfd->include_nondeduced_p))
return error_mark_node;
diff --git a/gcc/testsuite/g++.dg/cpp0x/alias-decl-51.C b/gcc/testsuite/g++.dg/cpp0x/alias-decl-51.C
new file mode 100644
index 0000000..cef3715
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/alias-decl-51.C
@@ -0,0 +1,9 @@
+// PR c++/66743
+// { dg-do compile { target c++11 } }
+
+template< class T >
+struct
+ type_is { using type = T; };
+
+template< class T >
+ using underlying_type = type_is<__underlying_type(T)>;