aboutsummaryrefslogtreecommitdiff
path: root/gcc/cp
diff options
context:
space:
mode:
authorJason Merrill <jason@redhat.com>2012-08-23 14:33:47 -0400
committerJason Merrill <jason@gcc.gnu.org>2012-08-23 14:33:47 -0400
commitddf72901e37eb6b7e495574341e0d6997f24e2e9 (patch)
tree8317d88ca69462083d7b8acd83f53474603500d3 /gcc/cp
parent545ca0f2785bd261c13392cb6191640282a73ee9 (diff)
downloadgcc-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/ChangeLog4
-rw-r--r--gcc/cp/cp-tree.h8
-rw-r--r--gcc/cp/decl.c9
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