semantics.c (trait_expr_value, [...]): Implement the letter of 20.11.6 about Base and Derived naming the same class...

/cp
2014-01-07  Paolo Carlini  <paolo.carlini@oracle.com>

	* semantics.c (trait_expr_value, [CPTK_IS_BASE_OF]): Implement
	the letter of 20.11.6 about Base and Derived naming the same
	class type modulo cv-qualifiers.

/testsuite
2014-01-07  Paolo Carlini  <paolo.carlini@oracle.com>

	* g++.dg/ext/is_base_of_incomplete-2.C: New.

From-SVN: r206386
This commit is contained in:
Paolo Carlini 2014-01-07 09:40:28 +00:00 committed by Paolo Carlini
parent a0cbe71e87
commit 1f872df762
4 changed files with 17 additions and 1 deletions

View File

@ -1,3 +1,9 @@
2014-01-07 Paolo Carlini <paolo.carlini@oracle.com>
* semantics.c (trait_expr_value, [CPTK_IS_BASE_OF]): Implement
the letter of 20.11.6 about Base and Derived naming the same
class type modulo cv-qualifiers.
2014-01-06 Adam Butcher <adam@jessamine.co.uk>
PR c++/59635

View File

@ -7106,7 +7106,8 @@ trait_expr_value (cp_trait_kind kind, tree type1, tree type2)
case CPTK_IS_BASE_OF:
return (NON_UNION_CLASS_TYPE_P (type1) && NON_UNION_CLASS_TYPE_P (type2)
&& DERIVED_FROM_P (type1, type2));
&& (same_type_ignoring_top_level_qualifiers_p (type1, type2)
|| DERIVED_FROM_P (type1, type2)));
case CPTK_IS_CLASS:
return (NON_UNION_CLASS_TYPE_P (type1));

View File

@ -1,3 +1,7 @@
2014-01-07 Paolo Carlini <paolo.carlini@oracle.com>
* g++.dg/ext/is_base_of_incomplete-2.C: New.
2014-01-07 Jakub Jelinek <jakub@redhat.com>
PR rtl-optimization/58668

View File

@ -0,0 +1,5 @@
struct T;
int check1[__is_base_of(T, T) ? 1 : -1];
int check2[__is_base_of(T, const T) ? 1 : -1];
int check3[__is_base_of(volatile T, T) ? 1 : -1];