c++: Fix ICE with concepts and aliases [PR93907].
authorJason Merrill <jason@redhat.com>
Wed, 11 Mar 2020 04:53:01 +0000 (00:53 -0400)
committerJason Merrill <jason@redhat.com>
Wed, 11 Mar 2020 20:45:39 +0000 (16:45 -0400)
commitbde31a76ba48be49dbe26317ce5e19d10ae9f310
treeef6e881a0d62e8369c1a1f8d78e1ee5e36b7d182
parent7eb5be6ab91ec03f93038ac2bcf3028cf2e7c82b
c++: Fix ICE with concepts and aliases [PR93907].

The problem here was that we were checking satisfaction once with 'e', a
typedef of 'void', and another time with 'void' directly, and treated them
as different for hashing based on the assumption that
canonicalize_type_argument would have already removed a typedef that wasn't
a complex dependent alias.  But that wasn't happening here, so let's add a
call.

gcc/cp/ChangeLog
2020-03-11  Jason Merrill  <jason@redhat.com>

PR c++/93907
* constraint.cc (tsubst_parameter_mapping): Canonicalize type
argument.
gcc/cp/ChangeLog
gcc/cp/constraint.cc
gcc/cp/cp-tree.h
gcc/cp/pt.c
gcc/testsuite/g++.dg/cpp2a/concepts-using2.C [new file with mode: 0644]