r270433 - in /trunk: gcc/cp/ChangeLog gcc/cp/pt...

jason@gcc.gnu.org jason@gcc.gnu.org
Thu Apr 18 03:32:00 GMT 2019


Author: jason
Date: Thu Apr 18 03:32:24 2019
New Revision: 270433

URL: https://gcc.gnu.org/viewcvs?rev=270433&root=gcc&view=rev
Log:
	PR c++/90047 - ICE with enable_if alias template.

In order to make alias templates useful for SFINAE we instantiate them under
the prevailing 'complain' argument, so an error encountered while
instantiating during SFINAE context is silent.  The problem in this PR comes
when we later look up the erroneous instantiation and don't give an error at
that point.  Fixed by not adding an erroneous instantiation to the hash
table, so we instantiate it again when needed and get the error.  This
required changes to a number of tests, which previously said "substitution
failed:" with no explanation of what the failure was; now we properly
explain.

	* pt.c (tsubst_decl) [TYPE_DECL]: Don't put an erroneous decl in the
	hash table when we're in SFINAE context.

Modified:
    trunk/libstdc++-v3/testsuite/20_util/duration/arithmetic/dr3050.cc
    trunk/libstdc++-v3/testsuite/20_util/from_chars/1_c++20_neg.cc
    trunk/libstdc++-v3/testsuite/20_util/from_chars/1_neg.cc
    trunk/libstdc++-v3/testsuite/20_util/shared_ptr/assign/auto_ptr_neg.cc
    trunk/libstdc++-v3/testsuite/20_util/shared_ptr/assign/shared_ptr_neg.cc
    trunk/libstdc++-v3/testsuite/20_util/shared_ptr/cons/unique_ptr_neg.cc
    trunk/libstdc++-v3/testsuite/20_util/to_chars/1_neg.cc
    trunk/libstdc++-v3/testsuite/20_util/tuple/element_access/get_neg.cc
    trunk/libstdc++-v3/testsuite/20_util/unique_ptr/cons/ptr_deleter_neg.cc
    trunk/libstdc++-v3/testsuite/20_util/unique_ptr/modifiers/reset_neg.cc
    trunk/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/assign_neg.cc
    trunk/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/constructor_1_neg.cc
    trunk/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/constructor_2_neg.cc
    trunk/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/insert_neg.cc
    trunk/libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/assign_neg.cc
    trunk/libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/constructor_1_neg.cc
    trunk/libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/constructor_2_neg.cc
    trunk/libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/insert_neg.cc
    trunk/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/assign_neg.cc
    trunk/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/constructor_1_neg.cc
    trunk/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/constructor_2_neg.cc
    trunk/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/insert_neg.cc
    trunk/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/assign_neg.cc
    trunk/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_1_neg.cc
    trunk/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_2_neg.cc
    trunk/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/insert_neg.cc
    trunk/libstdc++-v3/testsuite/experimental/memory/shared_ptr/cons/copy_ctor_neg.cc
    trunk/libstdc++-v3/testsuite/experimental/memory/shared_ptr/cons/pointer_ctor_neg.cc
    trunk/libstdc++-v3/testsuite/experimental/memory/shared_ptr/modifiers/reset_neg.cc

Changes in other areas also in this revision:
Added:
    trunk/gcc/testsuite/g++.dg/cpp0x/alias-decl-67.C
Modified:
    trunk/gcc/cp/ChangeLog
    trunk/gcc/cp/pt.c
    trunk/gcc/testsuite/g++.old-deja/g++.robertl/eb43.C



More information about the Libstdc++-cvs mailing list