re PR bootstrap/35704 (Bootstrap failure on i686-apple-darwin9 at revision 133519...
authorDouglas Gregor <doug.gregor@gmail.com>
Thu, 27 Mar 2008 14:53:57 +0000 (14:53 +0000)
committerDoug Gregor <dgregor@gcc.gnu.org>
Thu, 27 Mar 2008 14:53:57 +0000 (14:53 +0000)
2008-03-27  Douglas Gregor  <doug.gregor@gmail.com>

PR obj-c++/35704
* typeck.c (build_x_compound_expr): Use cp_build_compound_expr.
(build_compound_expr): New, for compatibility with C
build_compound_expr.
(cp_build_compound_expr): Renamed from build_compound_expr.
(build_c_cast): New, for compatibility with C build_c_cast.
(cp_build_c_cast): Renamed from build_c_cast.
* init.c (build_vec_delete_1): Fix calls to build_compound_expr.
* decl.c (cxx_maybe_build_cleanup): Ditto.
* cp-tree.h (build_compound_expr): Add C-compatibile prototype.
(cp_build_compound_expr): Renamed from build_compound_expr.
(build_c_cast): Add C-compatible prototype.
(cp_build_c_cast): Renamed from build_c_cast.
* typeck2.c (build_functional_cast): Use cp_build_c_cast.
* parser.c (cp_parser_cast_expression): Fix call to build_c_cast.

2008-03-27  Douglas Gregor  <doug.gregor@gmail.com>

PR obj-c++/35704
* objc-act.c (objc_build_component_ref): Fix call to
finish_class_member_access_expr.
(objc_generate_cxx_ctor_or_dtor): Fix call to
build_special_member_call.

From-SVN: r133643

gcc/cp/ChangeLog
gcc/cp/cp-tree.h
gcc/cp/decl.c
gcc/cp/init.c
gcc/cp/parser.c
gcc/cp/typeck.c
gcc/cp/typeck2.c
gcc/objc/ChangeLog
gcc/objc/objc-act.c

index 68c17fd..10e7af7 100644 (file)
@@ -1,5 +1,23 @@
 2008-03-27  Douglas Gregor  <doug.gregor@gmail.com>
 
+       PR obj-c++/35704
+       * typeck.c (build_x_compound_expr): Use cp_build_compound_expr.
+       (build_compound_expr): New, for compatibility with C
+       build_compound_expr.
+       (cp_build_compound_expr): Renamed from build_compound_expr.
+       (build_c_cast): New, for compatibility with C build_c_cast.
+       (cp_build_c_cast): Renamed from build_c_cast.
+       * init.c (build_vec_delete_1): Fix calls to build_compound_expr.
+       * decl.c (cxx_maybe_build_cleanup): Ditto.
+       * cp-tree.h (build_compound_expr): Add C-compatibile prototype.
+       (cp_build_compound_expr): Renamed from build_compound_expr.
+       (build_c_cast): Add C-compatible prototype.
+       (cp_build_c_cast): Renamed from build_c_cast.
+       * typeck2.c (build_functional_cast): Use cp_build_c_cast.
+       * parser.c (cp_parser_cast_expression): Fix call to build_c_cast.
+
+2008-03-27  Douglas Gregor  <doug.gregor@gmail.com>
+
        * pt.c (tsubst_copy) <case SIZEOF_EXPR>: Cope with
        tsubst_pack_expansion returning a pack expansion, or a TREE_VEC
        ending in a pack expansion, both of which can occur when
index 8387fd7..f50b926 100644 (file)
@@ -4804,11 +4804,13 @@ extern tree build_x_conditional_expr            (tree, tree, tree,
                                                  tsubst_flags_t);
 extern tree build_x_compound_expr_from_list    (tree, const char *);
 extern tree build_x_compound_expr              (tree, tree, tsubst_flags_t);
-extern tree build_compound_expr                        (tree, tree, tsubst_flags_t);
+extern tree build_compound_expr                 (tree, tree);
+extern tree cp_build_compound_expr             (tree, tree, tsubst_flags_t);
 extern tree build_static_cast                  (tree, tree, tsubst_flags_t);
 extern tree build_reinterpret_cast             (tree, tree, tsubst_flags_t);
 extern tree build_const_cast                   (tree, tree, tsubst_flags_t);
-extern tree build_c_cast                       (tree, tree, tsubst_flags_t);
+extern tree build_c_cast                       (tree, tree);
+extern tree cp_build_c_cast                    (tree, tree, tsubst_flags_t);
 extern tree build_x_modify_expr                        (tree, enum tree_code, tree,
                                                 tsubst_flags_t);
 extern tree cp_build_modify_expr               (tree, enum tree_code, tree,
index df0b78c..8737496 100644 (file)
@@ -12229,7 +12229,7 @@ cxx_maybe_build_cleanup (tree decl)
       call = build_delete (TREE_TYPE (addr), addr,
                           sfk_complete_destructor, flags, 0);
       if (cleanup)
-       cleanup = build_compound_expr (cleanup, call, tf_warning_or_error);
+       cleanup = build_compound_expr (cleanup, call);
       else
        cleanup = call;
     }
index dc4e988..6b2156d 100644 (file)
@@ -2528,15 +2528,13 @@ build_vec_delete_1 (tree base, tree maxindex, tree type,
   body = build_compound_expr
     (body, cp_build_modify_expr (tbase, NOP_EXPR,
                                 build2 (POINTER_PLUS_EXPR, ptype, tbase, tmp),
-                                tf_warning_or_error),
-     tf_warning_or_error);
+                                tf_warning_or_error));
   body = build_compound_expr
     (body, build_delete (ptype, tbase, sfk_complete_destructor,
-                        LOOKUP_NORMAL|LOOKUP_DESTRUCTOR, 1),
-     tf_warning_or_error);
+                        LOOKUP_NORMAL|LOOKUP_DESTRUCTOR, 1));
 
   loop = build1 (LOOP_EXPR, void_type_node, body);
-  loop = build_compound_expr (tbase_init, loop, tf_warning_or_error);
+  loop = build_compound_expr (tbase_init, loop);
 
  no_destructor:
   /* If the delete flag is one, or anything else with the low bit set,
@@ -2582,7 +2580,7 @@ build_vec_delete_1 (tree base, tree maxindex, tree type,
   else if (!body)
     body = deallocate_expr;
   else
-    body = build_compound_expr (body, deallocate_expr, tf_warning_or_error);
+    body = build_compound_expr (body, deallocate_expr);
 
   if (!body)
     body = integer_zero_node;
index 87b353e..35a2fc3 100644 (file)
@@ -5880,7 +5880,7 @@ cp_parser_cast_expression (cp_parser *parser, bool address_p, bool cast_p)
            return error_mark_node;
 
          /* Perform the cast.  */
-         expr = build_c_cast (type, expr, tf_warning_or_error);
+         expr = build_c_cast (type, expr);
          return expr;
        }
     }
index 2e8151b..de10c0e 100644 (file)
@@ -5037,7 +5037,7 @@ build_x_compound_expr (tree op1, tree op2, tsubst_flags_t complain)
   result = build_new_op (COMPOUND_EXPR, LOOKUP_NORMAL, op1, op2, NULL_TREE,
                         /*overloaded_p=*/NULL, complain);
   if (!result)
-    result = build_compound_expr (op1, op2, complain);
+    result = cp_build_compound_expr (op1, op2, complain);
 
   if (processing_template_decl && result != error_mark_node)
     return build_min_non_dep (COMPOUND_EXPR, result, orig_op1, orig_op2);
@@ -5045,10 +5045,18 @@ build_x_compound_expr (tree op1, tree op2, tsubst_flags_t complain)
   return result;
 }
 
+/* Like cp_build_compound_expr, but for the c-common bits.  */
+
+tree
+build_compound_expr (tree lhs, tree rhs)
+{
+  return cp_build_compound_expr (lhs, rhs, tf_warning_or_error);
+}
+
 /* Build a compound expression.  */
 
 tree
-build_compound_expr (tree lhs, tree rhs, tsubst_flags_t complain)
+cp_build_compound_expr (tree lhs, tree rhs, tsubst_flags_t complain)
 {
   lhs = convert_to_void (lhs, "left-hand operand of comma", complain);
 
@@ -5775,11 +5783,19 @@ build_const_cast (tree type, tree expr, tsubst_flags_t complain)
                             /*valid_p=*/NULL);
 }
 
+/* Like cp_build_c_cast, but for the c-common bits.  */
+
+tree
+build_c_cast (tree type, tree expr)
+{
+  return cp_build_c_cast (type, expr, tf_warning_or_error);
+}
+
 /* Build an expression representing an explicit C-style cast to type
    TYPE of expression EXPR.  */
 
 tree
-build_c_cast (tree type, tree expr, tsubst_flags_t complain)
+cp_build_c_cast (tree type, tree expr, tsubst_flags_t complain)
 {
   tree value = expr;
   tree result;
@@ -6466,7 +6482,7 @@ build_ptrmemfunc (tree type, tree pfn, int force, bool c_cast_p)
   /* Handle null pointer to member function conversions.  */
   if (integer_zerop (pfn))
     {
-      pfn = build_c_cast (type, integer_zero_node, tf_warning_or_error);
+      pfn = build_c_cast (type, integer_zero_node);
       return build_ptrmemfunc1 (to_type,
                                integer_zero_node,
                                pfn);
index 4fdb07f..409c492 100644 (file)
@@ -1342,7 +1342,7 @@ build_functional_cast (tree exp, tree parms, tsubst_flags_t complain)
 
       /* This must build a C cast.  */
       parms = build_x_compound_expr_from_list (parms, "functional cast");
-      return build_c_cast (type, parms, complain);
+      return cp_build_c_cast (type, parms, complain);
     }
 
   /* Prepare to evaluate as a call to a constructor.  If this expression
@@ -1363,7 +1363,7 @@ build_functional_cast (tree exp, tree parms, tsubst_flags_t complain)
      conversion is equivalent (in definedness, and if defined in
      meaning) to the corresponding cast expression.  */
   if (parms && TREE_CHAIN (parms) == NULL_TREE)
-    return build_c_cast (type, TREE_VALUE (parms), complain);
+    return cp_build_c_cast (type, TREE_VALUE (parms), complain);
 
   /* [expr.type.conv]
 
index 7584ed1..4b0b028 100644 (file)
@@ -1,3 +1,11 @@
+2008-03-27  Douglas Gregor  <doug.gregor@gmail.com>
+
+       PR obj-c++/35704
+       * objc-act.c (objc_build_component_ref): Fix call to
+       finish_class_member_access_expr.
+       (objc_generate_cxx_ctor_or_dtor): Fix call to
+       build_special_member_call.
+
 2008-03-25  Andrew Pinski  <pinskia@gmail.com>
 
        PR objc/29197
index 48bf974..9baa4da 100644 (file)
@@ -1255,7 +1255,8 @@ objc_build_component_ref (tree datum, tree component)
      front-end, but 'finish_class_member_access_expr' seems to be
      a worthy substitute.  */
 #ifdef OBJCPLUS
-  return finish_class_member_access_expr (datum, component, false);
+  return finish_class_member_access_expr (datum, component, false,
+                                          tf_warning_or_error);
 #else
   return build_component_ref (datum, component);
 #endif
@@ -4493,7 +4494,7 @@ objc_generate_cxx_ctor_or_dtor (bool dtor)
             (build_special_member_call
              (build_ivar_reference (DECL_NAME (ivar)),
               dtor ? complete_dtor_identifier : complete_ctor_identifier,
-              NULL_TREE, type, LOOKUP_NORMAL));
+              NULL_TREE, type, LOOKUP_NORMAL, tf_warning_or_error));
        }
     }