OSDN Git Service

* typeck.c (cp_build_array_ref): Factor out from...
authorjason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 13 May 2010 20:53:38 +0000 (20:53 +0000)
committerMasaki Muranaka <monaka@monami-software.com>
Sun, 23 May 2010 05:08:01 +0000 (14:08 +0900)
(build_array_ref): ...here.  Drop complain parm.
(build_new_op): Adjust.
* class.c (build_vtbl_ref_1): Adjust.
* decl2.c (grok_array_decl): Adjust.
* cp-tree.h: Adjust prototypes.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@159377 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/cp/ChangeLog
gcc/cp/call.c
gcc/cp/class.c
gcc/cp/cp-tree.h
gcc/cp/decl2.c
gcc/cp/typeck.c

index 39766ac..cd8dfd2 100644 (file)
@@ -1,3 +1,12 @@
+2010-05-13  Jason Merrill  <jason@redhat.com>
+
+       * typeck.c (cp_build_array_ref): Factor out from...
+       (build_array_ref): ...here.  Drop complain parm.
+       (build_new_op): Adjust.
+       * class.c (build_vtbl_ref_1): Adjust.
+       * decl2.c (grok_array_decl): Adjust.
+       * cp-tree.h: Adjust prototypes.
+
 2010-05-13  Jan Hubicka  <jh@suse.cz>
 
        * decl.c (cp_finish_decl): Do not worry about used attribute.
index 5f8aeea..6ed53dc 100644 (file)
@@ -4517,7 +4517,7 @@ build_new_op (enum tree_code code, int flags, tree arg1, tree arg2, tree arg3,
       return cp_build_unary_op (code, arg1, candidates != 0, complain);
 
     case ARRAY_REF:
-      return build_array_ref (input_location, arg1, arg2, complain);
+      return cp_build_array_ref (input_location, arg1, arg2, complain);
 
     case MEMBER_REF:
       return build_m_component_ref (cp_build_indirect_ref (arg1, RO_NULL, 
index 2750644..748e1b3 100644 (file)
@@ -629,7 +629,7 @@ build_vtbl_ref_1 (tree instance, tree idx)
   if (!vtbl)
     vtbl = build_vfield_ref (instance, basetype);
 
-  aref = build_array_ref (input_location, vtbl, idx, tf_warning_or_error);
+  aref = build_array_ref (input_location, vtbl, idx);
   TREE_CONSTANT (aref) |= TREE_CONSTANT (vtbl) && TREE_CONSTANT (idx);
 
   return aref;
index a9dc616..3b8e9d0 100644 (file)
@@ -5365,7 +5365,8 @@ extern tree build_x_indirect_ref          (tree, ref_operator,
                                                  tsubst_flags_t);
 extern tree cp_build_indirect_ref              (tree, ref_operator,
                                                  tsubst_flags_t);
-extern tree build_array_ref                    (location_t, tree, tree,
+extern tree build_array_ref                    (location_t, tree, tree);
+extern tree cp_build_array_ref                 (location_t, tree, tree,
                                                 tsubst_flags_t);
 extern tree get_member_function_from_ptrfunc   (tree *, tree);
 extern tree cp_build_function_call              (tree, tree, tsubst_flags_t);
index 553d70a..2fd6305 100644 (file)
@@ -402,8 +402,7 @@ grok_array_decl (tree array_expr, tree index_exp)
       if (array_expr == error_mark_node || index_exp == error_mark_node)
        error ("ambiguous conversion for array subscript");
 
-      expr = build_array_ref (input_location, array_expr, index_exp,
-                             tf_warning_or_error);
+      expr = build_array_ref (input_location, array_expr, index_exp);
     }
   if (processing_template_decl && expr != error_mark_node)
     return build_min_non_dep (ARRAY_REF, expr, orig_array_expr, orig_index_exp,
index 91aaafe..dfdd592 100644 (file)
@@ -2860,8 +2860,8 @@ cp_build_indirect_ref (tree ptr, ref_operator errorstring,
    LOC is the location to use in building the array reference.  */
 
 tree
-build_array_ref (location_t loc, tree array, tree idx,
-                tsubst_flags_t complain)
+cp_build_array_ref (location_t loc, tree array, tree idx,
+                   tsubst_flags_t complain)
 {
   tree ret;
 
@@ -2882,8 +2882,8 @@ build_array_ref (location_t loc, tree array, tree idx,
     {
     case COMPOUND_EXPR:
       {
-       tree value = build_array_ref (loc, TREE_OPERAND (array, 1), idx,
-                                     complain);
+       tree value = cp_build_array_ref (loc, TREE_OPERAND (array, 1), idx,
+                                        complain);
        ret = build2 (COMPOUND_EXPR, TREE_TYPE (value),
                      TREE_OPERAND (array, 0), value);
        SET_EXPR_LOCATION (ret, loc);
@@ -2893,8 +2893,10 @@ build_array_ref (location_t loc, tree array, tree idx,
     case COND_EXPR:
       ret = build_conditional_expr
              (TREE_OPERAND (array, 0),
-              build_array_ref (loc, TREE_OPERAND (array, 1), idx, complain),
-              build_array_ref (loc, TREE_OPERAND (array, 2), idx, complain),
+              cp_build_array_ref (loc, TREE_OPERAND (array, 1), idx,
+                                  complain),
+              cp_build_array_ref (loc, TREE_OPERAND (array, 2), idx,
+                                  complain),
               tf_warning_or_error);
       protected_set_expr_location (ret, loc);
       return ret;
@@ -3020,6 +3022,14 @@ build_array_ref (location_t loc, tree array, tree idx,
     return ret;
   }
 }
+
+/* Entry point for Obj-C++.  */
+
+tree
+build_array_ref (location_t loc, tree array, tree idx)
+{
+  return cp_build_array_ref (loc, array, idx, tf_warning_or_error);
+}
 \f
 /* Resolve a pointer to member function.  INSTANCE is the object
    instance to use, if the member points to a virtual member.