re PR c++/50732 ([type_traits] is_base_of<Base, Derived> unnecessarily instantiates...
authorPaolo Carlini <paolo.carlini@oracle.com>
Sat, 15 Oct 2011 19:49:33 +0000 (19:49 +0000)
committerPaolo Carlini <paolo@gcc.gnu.org>
Sat, 15 Oct 2011 19:49:33 +0000 (19:49 +0000)
commit4f75413f5eb64831d09f2792c433a91bab46fa6c
tree926a7708203d24fbbb6e3f7f99596c230ab2c51e
parent2635892a1c64fc7e5b8c1c13d53dd0468ffc757d
re PR c++/50732 ([type_traits] is_base_of<Base, Derived> unnecessarily instantiates Base (which shouldn't be instantiated))

/cp
2011-10-15  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/50732
* semantics.c (finish_trait_expr): Do not try to instantiate the
the base type of an __is_base_of trait.
(check_trait_type): Return a tree; use complete_type_or_else.

/testsuite
2011-10-15  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/50732
* g++.dg/ext/is_base_of_incomplete.C: New.
* g++.dg/ext/is_base_of_diagnostic.C: Adjust dg-errors.
* g++.dg/ext/unary_trait_incomplete.C: Likewise.

From-SVN: r180048
gcc/cp/ChangeLog
gcc/cp/semantics.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/ext/is_base_of_diagnostic.C
gcc/testsuite/g++.dg/ext/is_base_of_incomplete.C [new file with mode: 0644]
gcc/testsuite/g++.dg/ext/unary_trait_incomplete.C