diff options
author | Jason Merrill <jason@redhat.com> | 2012-08-23 14:33:47 -0400 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 2012-08-23 14:33:47 -0400 |
commit | ddf72901e37eb6b7e495574341e0d6997f24e2e9 (patch) | |
tree | 8317d88ca69462083d7b8acd83f53474603500d3 /gcc/cp | |
parent | 545ca0f2785bd261c13392cb6191640282a73ee9 (diff) | |
download | gcc-ddf72901e37eb6b7e495574341e0d6997f24e2e9.zip gcc-ddf72901e37eb6b7e495574341e0d6997f24e2e9.tar.gz gcc-ddf72901e37eb6b7e495574341e0d6997f24e2e9.tar.bz2 |
* decl.c (compute_array_index_type): Use type_dependent_expression_p.
From-SVN: r190626
Diffstat (limited to 'gcc/cp')
-rw-r--r-- | gcc/cp/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/cp/cp-tree.h | 8 | ||||
-rw-r--r-- | gcc/cp/decl.c | 9 |
3 files changed, 12 insertions, 9 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 58e6e1f..0c89111 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,7 @@ +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> PR c++/20420 diff --git a/gcc/cp/cp-tree.h b/gcc/cp/cp-tree.h index 54615bb..a787ec1 100644 --- a/gcc/cp/cp-tree.h +++ b/gcc/cp/cp-tree.h @@ -5775,10 +5775,10 @@ extern linkage_kind decl_linkage (tree); extern duration_kind decl_storage_duration (tree); extern tree cp_walk_subtrees (tree*, int*, walk_tree_fn, void*, struct pointer_set_t*); -#define cp_walk_tree(a,b,c,d) \ - walk_tree_1 (a, b, c, d, cp_walk_subtrees) -#define cp_walk_tree_without_duplicates(a,b,c) \ - walk_tree_without_duplicates_1 (a, b, c, cp_walk_subtrees) +#define cp_walk_tree(tp,func,data,pset) \ + walk_tree_1 (tp, func, data, pset, cp_walk_subtrees) +#define cp_walk_tree_without_duplicates(tp,func,data) \ + walk_tree_without_duplicates_1 (tp, func, data, cp_walk_subtrees) extern tree fold_if_not_in_template (tree); extern tree rvalue (tree); extern tree convert_bitfield_to_declared_type (tree); diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c index 365ca94..4b2958c 100644 --- a/gcc/cp/decl.c +++ b/gcc/cp/decl.c @@ -7916,7 +7916,6 @@ stabilize_vla_size (tree size) tree compute_array_index_type (tree name, tree size, tsubst_flags_t complain) { - tree type; tree itype; tree osize = size; tree abi_1_itype = NULL_TREE; @@ -7924,10 +7923,10 @@ compute_array_index_type (tree name, tree size, tsubst_flags_t complain) if (error_operand_p (size)) return error_mark_node; - type = TREE_TYPE (size); - /* type_dependent_expression_p? */ - if (!dependent_type_p (type)) + if (!type_dependent_expression_p (size)) { + tree type = TREE_TYPE (size); + mark_rvalue_use (size); 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) /* We can only call value_dependent_expression_p on integral constant expressions; treat non-constant expressions as dependent, too. */ if (processing_template_decl - && (dependent_type_p (type) + && (type_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 |