Commit ddf72901 by Jason Merrill Committed by Jason Merrill

* decl.c (compute_array_index_type): Use type_dependent_expression_p.

From-SVN: r190626
parent 545ca0f2
2012-08-23 Jason Merrill <jason@redhat.com>
* decl.c (compute_array_index_type): Use type_dependent_expression_p.
2012-08-23 Paolo Carlini <paolo.carlini@oracle.com> 2012-08-23 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/20420 PR c++/20420
......
...@@ -5775,10 +5775,10 @@ extern linkage_kind decl_linkage (tree); ...@@ -5775,10 +5775,10 @@ extern linkage_kind decl_linkage (tree);
extern duration_kind decl_storage_duration (tree); extern duration_kind decl_storage_duration (tree);
extern tree cp_walk_subtrees (tree*, int*, walk_tree_fn, extern tree cp_walk_subtrees (tree*, int*, walk_tree_fn,
void*, struct pointer_set_t*); void*, struct pointer_set_t*);
#define cp_walk_tree(a,b,c,d) \ #define cp_walk_tree(tp,func,data,pset) \
walk_tree_1 (a, b, c, d, cp_walk_subtrees) walk_tree_1 (tp, func, data, pset, cp_walk_subtrees)
#define cp_walk_tree_without_duplicates(a,b,c) \ #define cp_walk_tree_without_duplicates(tp,func,data) \
walk_tree_without_duplicates_1 (a, b, c, cp_walk_subtrees) walk_tree_without_duplicates_1 (tp, func, data, cp_walk_subtrees)
extern tree fold_if_not_in_template (tree); extern tree fold_if_not_in_template (tree);
extern tree rvalue (tree); extern tree rvalue (tree);
extern tree convert_bitfield_to_declared_type (tree); extern tree convert_bitfield_to_declared_type (tree);
......
...@@ -7916,7 +7916,6 @@ stabilize_vla_size (tree size) ...@@ -7916,7 +7916,6 @@ stabilize_vla_size (tree size)
tree tree
compute_array_index_type (tree name, tree size, tsubst_flags_t complain) compute_array_index_type (tree name, tree size, tsubst_flags_t complain)
{ {
tree type;
tree itype; tree itype;
tree osize = size; tree osize = size;
tree abi_1_itype = NULL_TREE; tree abi_1_itype = NULL_TREE;
...@@ -7924,10 +7923,10 @@ compute_array_index_type (tree name, tree size, tsubst_flags_t complain) ...@@ -7924,10 +7923,10 @@ compute_array_index_type (tree name, tree size, tsubst_flags_t complain)
if (error_operand_p (size)) if (error_operand_p (size))
return error_mark_node; return error_mark_node;
type = TREE_TYPE (size); if (!type_dependent_expression_p (size))
/* type_dependent_expression_p? */
if (!dependent_type_p (type))
{ {
tree type = TREE_TYPE (size);
mark_rvalue_use (size); mark_rvalue_use (size);
if (cxx_dialect < cxx0x && TREE_CODE (size) == NOP_EXPR if (cxx_dialect < cxx0x && TREE_CODE (size) == NOP_EXPR
...@@ -7989,7 +7988,7 @@ compute_array_index_type (tree name, tree size, tsubst_flags_t complain) ...@@ -7989,7 +7988,7 @@ compute_array_index_type (tree name, tree size, tsubst_flags_t complain)
/* We can only call value_dependent_expression_p on integral constant /* We can only call value_dependent_expression_p on integral constant
expressions; treat non-constant expressions as dependent, too. */ expressions; treat non-constant expressions as dependent, too. */
if (processing_template_decl if (processing_template_decl
&& (dependent_type_p (type) && (type_dependent_expression_p (size)
|| !TREE_CONSTANT (size) || value_dependent_expression_p (size))) || !TREE_CONSTANT (size) || value_dependent_expression_p (size)))
{ {
/* We cannot do any checking for a SIZE that isn't known to be /* We cannot do any checking for a SIZE that isn't known to be
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment