There's no reason we should have the logic for whether a TRAIT_EXPR is
value-dependent in two places.
Tested x86_64-pc-linux-gnu, applying to trunk.
commit fcd3802b2b88251b6c0dea63b38e6f269be7713d
Author: Jason Merrill <ja...@redhat.com>
Date: Tue Jul 7 23:49:21 2015 -0400
* pt.c (instantiation_dependent_r) [TRAIT_EXPR]: Call
value_dependent_expression_p.
diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c
index 4911096..b5f1af8 100644
--- a/gcc/cp/parser.c
+++ b/gcc/cp/parser.c
@@ -20788,7 +20788,7 @@ cp_parser_member_declaration (cp_parser* parser)
decl = cp_parser_alias_declaration (parser);
/* Note that if we actually see the '=' token after the
identifier, cp_parser_alias_declaration commits the
- tentative parse. In that case, we really expects an
+ tentative parse. In that case, we really expect an
alias-declaration. Otherwise, we expect a using
declaration. */
alias_decl_expected =
diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c
index d3e9d31..63907ce 100644
--- a/gcc/cp/pt.c
+++ b/gcc/cp/pt.c
@@ -20131,7 +20131,7 @@ template_for_substitution (tree decl)
}
/* Returns true if we need to instantiate this template instance even if we
- know we aren't going to emit it.. */
+ know we aren't going to emit it. */
bool
always_instantiate_p (tree decl)
@@ -21684,9 +21684,7 @@ instantiation_dependent_r (tree *tp, int *walk_subtrees,
}
case TRAIT_EXPR:
- if (dependent_type_p (TRAIT_EXPR_TYPE1 (*tp))
- || (TRAIT_EXPR_TYPE2 (*tp)
- && dependent_type_p (TRAIT_EXPR_TYPE2 (*tp))))
+ if (value_dependent_expression_p (*tp))
return *tp;
*walk_subtrees = false;
return NULL_TREE;