+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
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. */
}
static tree
-expr_last (complex_expr)
+objc_expr_last (complex_expr)
tree complex_expr;
{
tree next;
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);
{
/* 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;
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,
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));