* decl.c (compute_array_index_type): Use type_dependent_expression_p.
authorjason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 23 Aug 2012 18:33:47 +0000 (18:33 +0000)
committerjason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 23 Aug 2012 18:33:47 +0000 (18:33 +0000)
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@190626 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/cp/ChangeLog
gcc/cp/cp-tree.h
gcc/cp/decl.c

index 58e6e1f..0c89111 100644 (file)
@@ -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
index 54615bb..a787ec1 100644 (file)
@@ -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);
index 365ca94..4b2958c 100644 (file)
@@ -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