OSDN Git Service

* tree.c (expr_last): New fn.
authorjason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 20 May 2003 20:24:08 +0000 (20:24 +0000)
committerjason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 20 May 2003 20:24:08 +0000 (20:24 +0000)
        * tree.h: Declare it.
        * objc/objc-act (expr_last): Rename to objc_expr_last.

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

gcc/ChangeLog
gcc/objc/objc-act.c
gcc/tree.c
gcc/tree.h

index b4b1065..4ec04bf 100644 (file)
@@ -1,3 +1,9 @@
+2003-05-20  Jason Merrill  <jason@redhat.com>
+
+       * tree.c (expr_last): New fn.
+       * tree.h: Declare it.
+       * objc/objc-act (expr_last): Rename to objc_expr_last.
+
 2003-05-20  J"orn Rennecke <joern.rennecke@superh.com>
 
        * sh.c (sh_register_move_cost): Add clase for moving between
index 0625958..e0670e5 100644 (file)
@@ -217,7 +217,7 @@ static void really_start_method                     PARAMS ((tree, tree));
 static int comp_method_with_proto              PARAMS ((tree, tree));
 static int comp_proto_with_proto               PARAMS ((tree, tree));
 static tree get_arg_type_list                  PARAMS ((tree, int, int));
-static tree expr_last                          PARAMS ((tree));
+static tree objc_expr_last                     PARAMS ((tree));
 
 /* Utilities for debugging and error diagnostics.  */
 
@@ -6998,7 +6998,7 @@ encode_field_decl (field_decl, curtype, format)
 }
 
 static tree
-expr_last (complex_expr)
+objc_expr_last (complex_expr)
      tree complex_expr;
 {
   tree next;
@@ -7059,7 +7059,7 @@ start_method_def (method)
 
          if (arg_decl)
            {
-             tree last_expr = expr_last (arg_decl);
+             tree last_expr = objc_expr_last (arg_decl);
 
              /* Unite the abstract decl with its name.  */
              TREE_OPERAND (last_expr, 0) = KEYWORD_ARG_NAME (arglist);
@@ -7195,7 +7195,7 @@ really_start_method (method, parmlist)
     {
       /* Unite the complex decl (specified in the abstract decl) with the
         function decl just synthesized..(int *), (int (*)()), (int (*)[]).  */
-      tree save_expr = expr_last (ret_decl);
+      tree save_expr = objc_expr_last (ret_decl);
 
       TREE_OPERAND (save_expr, 0) = method_decl;
       method_decl = ret_decl;
index 3271a5b..efb4e22 100644 (file)
@@ -1123,6 +1123,18 @@ tree_cons (purpose, value, chain)
   return node;
 }
 
+/* Return the last expression in a sequence of COMPOUND_EXPRs.  */
+
+tree
+expr_last (expr)
+     tree expr;
+{
+  if (expr == NULL_TREE)
+    return expr;
+  while (TREE_CODE (expr) == COMPOUND_EXPR)
+    expr = TREE_OPERAND (expr, 1);
+  return expr;
+}
 \f
 /* Return the size nominally occupied by an object of type TYPE
    when it resides in memory.  The value is measured in units of bytes,
index 9b18558..47562b2 100644 (file)
@@ -2532,6 +2532,7 @@ extern tree pedantic_non_lvalue           PARAMS ((tree));
 
 extern tree convert                    PARAMS ((tree, tree));
 extern unsigned int expr_align         PARAMS ((tree));
+extern tree expr_last                  PARAMS ((tree));
 extern tree size_in_bytes              PARAMS ((tree));
 extern HOST_WIDE_INT int_size_in_bytes PARAMS ((tree));
 extern tree bit_position               PARAMS ((tree));