aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoger Sayle <roger@eyesopen.com>2004-07-12 01:05:28 +0000
committerRoger Sayle <sayle@gcc.gnu.org>2004-07-12 01:05:28 +0000
commit247fec6ee6f9e831b62a1672abc0cc8a7ffb360e (patch)
tree0aa82b83b259ad8cc072354ecdf6169ce41fa8fa
parent186af37b4d21add3cdf6fb92dbf2d6d18092c9a2 (diff)
downloadgcc-247fec6ee6f9e831b62a1672abc0cc8a7ffb360e.zip
gcc-247fec6ee6f9e831b62a1672abc0cc8a7ffb360e.tar.gz
gcc-247fec6ee6f9e831b62a1672abc0cc8a7ffb360e.tar.bz2
expr.c (java_truthvalue_conversion, [...]): Convert calls to "build" into calls to the prefered "buildN" functions.
* expr.c (java_truthvalue_conversion, flush_quick_stack, java_stack_swap, java_stack_dup, build_java_athrow, build_java_jsr, build_java_ret, build_java_throw_out_of_bounds_exception, build_java_array_length_access, java_check_reference, build_java_arrayaccess, build_java_arraystore_check, build_newarray, build_anewarray, expand_java_multianewarray, expand_java_arraystore, expand_java_arrayload, build_java_monitor, expand_java_return, expand_load_internal, expand_java_NEW, build_get_class, build_instanceof, expand_java_CHECKCAST, expand_iinc, build_java_soft_divmod, build_java_binop, build_field_ref, expand_compare, expand_java_goto, expand_java_switch, expand_java_add_case, build_class_init, build_known_method_ref, invoke_build_dtable, build_invokevirtual, build_invokeinterface, expand_invoke, build_jni_stub, expand_java_field_op, java_expand_expr, expand_byte_code, STORE_INTERNAL, force_evaluation_order, emit_init_test_initialization): Convert calls to "build" into calls to the prefered "buildN" functions. From-SVN: r84541
-rw-r--r--gcc/java/ChangeLog20
-rw-r--r--gcc/java/expr.c499
2 files changed, 272 insertions, 247 deletions
diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog
index c6966eb..d73e68d 100644
--- a/gcc/java/ChangeLog
+++ b/gcc/java/ChangeLog
@@ -1,3 +1,23 @@
+2004-07-11 Roger Sayle <roger@eyesopen.com>
+
+ * expr.c (java_truthvalue_conversion, flush_quick_stack,
+ java_stack_swap, java_stack_dup, build_java_athrow, build_java_jsr,
+ build_java_ret, build_java_throw_out_of_bounds_exception,
+ build_java_array_length_access, java_check_reference,
+ build_java_arrayaccess, build_java_arraystore_check, build_newarray,
+ build_anewarray, expand_java_multianewarray, expand_java_arraystore,
+ expand_java_arrayload, build_java_monitor, expand_java_return,
+ expand_load_internal, expand_java_NEW, build_get_class,
+ build_instanceof, expand_java_CHECKCAST, expand_iinc,
+ build_java_soft_divmod, build_java_binop, build_field_ref,
+ expand_compare, expand_java_goto, expand_java_switch,
+ expand_java_add_case, build_class_init, build_known_method_ref,
+ invoke_build_dtable, build_invokevirtual, build_invokeinterface,
+ expand_invoke, build_jni_stub, expand_java_field_op,
+ java_expand_expr, expand_byte_code, STORE_INTERNAL,
+ force_evaluation_order, emit_init_test_initialization): Convert
+ calls to "build" into calls to the prefered "buildN" functions.
+
2004-07-11 Joseph S. Myers <jsm@polyomino.org.uk>
* java-tree.h (set_block): Remove.
diff --git a/gcc/java/expr.c b/gcc/java/expr.c
index 81dfde6..a6bc575 100644
--- a/gcc/java/expr.c
+++ b/gcc/java/expr.c
@@ -186,9 +186,10 @@ java_truthvalue_conversion (tree expr)
case COND_EXPR:
/* Distribute the conversion into the arms of a COND_EXPR. */
- return fold (build (COND_EXPR, boolean_type_node, TREE_OPERAND (expr, 0),
- java_truthvalue_conversion (TREE_OPERAND (expr, 1)),
- java_truthvalue_conversion (TREE_OPERAND (expr, 2))));
+ return fold
+ (build3 (COND_EXPR, boolean_type_node, TREE_OPERAND (expr, 0),
+ java_truthvalue_conversion (TREE_OPERAND (expr, 1)),
+ java_truthvalue_conversion (TREE_OPERAND (expr, 2))));
case NOP_EXPR:
/* If this is widening the argument, we can ignore it. */
@@ -198,7 +199,8 @@ java_truthvalue_conversion (tree expr)
/* fall through to default */
default:
- return fold (build (NE_EXPR, boolean_type_node, expr, boolean_false_node));
+ return fold (build2 (NE_EXPR, boolean_type_node,
+ expr, boolean_false_node));
}
}
@@ -237,7 +239,7 @@ flush_quick_stack (void)
decl = find_stack_slot (stack_index, type);
if (decl != node)
- java_add_stmt (build (MODIFY_EXPR, TREE_TYPE (node), decl, node));
+ java_add_stmt (build2 (MODIFY_EXPR, TREE_TYPE (node), decl, node));
stack_index += 1 + TYPE_IS_WIDE (type);
}
}
@@ -512,13 +514,13 @@ java_stack_swap (void)
decl2 = find_stack_slot (stack_pointer - 2, type2);
temp = build_decl (VAR_DECL, NULL_TREE, type1);
java_add_local_var (temp);
- java_add_stmt (build (MODIFY_EXPR, type1, temp, decl1));
- java_add_stmt (build (MODIFY_EXPR, type2,
- find_stack_slot (stack_pointer - 1, type2),
- decl2));
- java_add_stmt (build (MODIFY_EXPR, type1,
- find_stack_slot (stack_pointer - 2, type1),
- temp));
+ java_add_stmt (build2 (MODIFY_EXPR, type1, temp, decl1));
+ java_add_stmt (build2 (MODIFY_EXPR, type2,
+ find_stack_slot (stack_pointer - 1, type2),
+ decl2));
+ java_add_stmt (build2 (MODIFY_EXPR, type1,
+ find_stack_slot (stack_pointer - 2, type1),
+ temp));
stack_type_map[stack_pointer - 1] = type2;
stack_type_map[stack_pointer - 2] = type1;
}
@@ -564,7 +566,7 @@ java_stack_dup (int size, int offset)
tree dst_decl = find_stack_slot (dst_index, type);
java_add_stmt
- (build (MODIFY_EXPR, TREE_TYPE (dst_decl), dst_decl, src_decl));
+ (build2 (MODIFY_EXPR, TREE_TYPE (dst_decl), dst_decl, src_decl));
stack_type_map[dst_index] = type;
}
}
@@ -578,11 +580,11 @@ build_java_athrow (tree node)
{
tree call;
- call = build (CALL_EXPR,
- void_type_node,
- build_address_of (throw_node),
- build_tree_list (NULL_TREE, node),
- NULL_TREE);
+ call = build3 (CALL_EXPR,
+ void_type_node,
+ build_address_of (throw_node),
+ build_tree_list (NULL_TREE, node),
+ NULL_TREE);
TREE_SIDE_EFFECTS (call) = 1;
java_add_stmt (call);
java_stack_pop (stack_pointer);
@@ -598,7 +600,7 @@ build_java_jsr (int target_pc, int return_pc)
tree ret_label = fold (build1 (ADDR_EXPR, return_address_type_node, ret));
push_value (ret_label);
flush_quick_stack ();
- java_add_stmt (build (GOTO_EXPR, void_type_node, where));
+ java_add_stmt (build1 (GOTO_EXPR, void_type_node, where));
/* Do not need to emit the label here. We noted the existance of the
label as a jump target in note_instructions; we'll emit the label
@@ -608,7 +610,7 @@ build_java_jsr (int target_pc, int return_pc)
static void
build_java_ret (tree location)
{
- java_add_stmt (build (GOTO_EXPR, void_type_node, location));
+ java_add_stmt (build1 (GOTO_EXPR, void_type_node, location));
}
/* Implementation of operations on array: new, load, store, length */
@@ -661,9 +663,9 @@ encode_newarray_type (tree type)
static tree
build_java_throw_out_of_bounds_exception (tree index)
{
- tree node = build (CALL_EXPR, int_type_node,
- build_address_of (soft_badarrayindex_node),
- build_tree_list (NULL_TREE, index), NULL_TREE);
+ tree node = build3 (CALL_EXPR, int_type_node,
+ build_address_of (soft_badarrayindex_node),
+ build_tree_list (NULL_TREE, index), NULL_TREE);
TREE_SIDE_EFFECTS (node) = 1; /* Allows expansion within ANDIF */
return (node);
}
@@ -683,9 +685,9 @@ build_java_array_length_access (tree node)
of type ptr_type_node at this point is `aconst_null; arraylength'
or something equivalent. */
if (type == ptr_type_node)
- return build (CALL_EXPR, int_type_node,
- build_address_of (soft_nullpointer_node),
- NULL_TREE, NULL_TREE);
+ return build3 (CALL_EXPR, int_type_node,
+ build_address_of (soft_nullpointer_node),
+ NULL_TREE, NULL_TREE);
if (!is_array_type_p (type))
abort ();
@@ -694,11 +696,11 @@ build_java_array_length_access (tree node)
if (length >= 0)
return build_int_2 (length, 0);
- node = build (COMPONENT_REF, int_type_node,
- build_java_indirect_ref (array_type, node,
- flag_check_references),
- lookup_field (&array_type, get_identifier ("length")),
- NULL_TREE);
+ node = build3 (COMPONENT_REF, int_type_node,
+ build_java_indirect_ref (array_type, node,
+ flag_check_references),
+ lookup_field (&array_type, get_identifier ("length")),
+ NULL_TREE);
IS_ARRAY_LENGTH_ACCESS (node) = 1;
return node;
}
@@ -713,12 +715,13 @@ java_check_reference (tree expr, int check)
if (!flag_syntax_only && check)
{
expr = save_expr (expr);
- expr = build (COND_EXPR, TREE_TYPE (expr),
- build (EQ_EXPR, boolean_type_node, expr, null_pointer_node),
- build (CALL_EXPR, void_type_node,
- build_address_of (soft_nullpointer_node),
- NULL_TREE, NULL_TREE),
- expr);
+ expr = build3 (COND_EXPR, TREE_TYPE (expr),
+ build2 (EQ_EXPR, boolean_type_node,
+ expr, null_pointer_node),
+ build3 (CALL_EXPR, void_type_node,
+ build_address_of (soft_nullpointer_node),
+ NULL_TREE, NULL_TREE),
+ expr);
}
return expr;
@@ -758,13 +761,13 @@ build_java_arrayaccess (tree array, tree type, tree index)
tree test;
tree len = build_java_array_length_access (array);
TREE_TYPE (len) = unsigned_int_type_node;
- test = fold (build (GE_EXPR, boolean_type_node,
- convert (unsigned_int_type_node, index),
- len));
+ test = fold (build2 (GE_EXPR, boolean_type_node,
+ convert (unsigned_int_type_node, index),
+ len));
if (! integer_zerop (test))
{
- throw = build (TRUTH_ANDIF_EXPR, int_type_node, test,
- build_java_throw_out_of_bounds_exception (index));
+ throw = build2 (TRUTH_ANDIF_EXPR, int_type_node, test,
+ build_java_throw_out_of_bounds_exception (index));
/* allows expansion within COMPOUND */
TREE_SIDE_EFFECTS( throw ) = 1;
}
@@ -773,16 +776,16 @@ build_java_arrayaccess (tree array, tree type, tree index)
/* If checking bounds, wrap the index expr with a COMPOUND_EXPR in order
to have the bounds check evaluated first. */
if (throw != NULL_TREE)
- index = build (COMPOUND_EXPR, int_type_node, throw, index);
+ index = build2 (COMPOUND_EXPR, int_type_node, throw, index);
data_field = lookup_field (&array_type, get_identifier ("data"));
- ref = build (COMPONENT_REF, TREE_TYPE (data_field),
- build_java_indirect_ref (array_type, array,
- flag_check_references),
- data_field, NULL_TREE);
+ ref = build3 (COMPONENT_REF, TREE_TYPE (data_field),
+ build_java_indirect_ref (array_type, array,
+ flag_check_references),
+ data_field, NULL_TREE);
- node = build (ARRAY_REF, type, ref, index, NULL_TREE, NULL_TREE);
+ node = build4 (ARRAY_REF, type, ref, index, NULL_TREE, NULL_TREE);
return node;
}
@@ -844,11 +847,11 @@ build_java_arraystore_check (tree array, tree object)
}
/* Build an invocation of _Jv_CheckArrayStore */
- check = build (CALL_EXPR, void_type_node,
- build_address_of (soft_checkarraystore_node),
- tree_cons (NULL_TREE, array,
- build_tree_list (NULL_TREE, object)),
- NULL_TREE);
+ check = build3 (CALL_EXPR, void_type_node,
+ build_address_of (soft_checkarraystore_node),
+ tree_cons (NULL_TREE, array,
+ build_tree_list (NULL_TREE, object)),
+ NULL_TREE);
TREE_SIDE_EFFECTS (check) = 1;
return check;
@@ -907,12 +910,12 @@ build_newarray (int atype_value, tree length)
else
type_arg = build_class_ref (prim_type);
- return build (CALL_EXPR, promote_type (type),
- build_address_of (soft_newarray_node),
- tree_cons (NULL_TREE,
- type_arg,
- build_tree_list (NULL_TREE, length)),
- NULL_TREE);
+ return build3 (CALL_EXPR, promote_type (type),
+ build_address_of (soft_newarray_node),
+ tree_cons (NULL_TREE,
+ type_arg,
+ build_tree_list (NULL_TREE, length)),
+ NULL_TREE);
}
/* Generates anewarray from a given CLASS_TYPE. Gets from the stack the size
@@ -926,13 +929,13 @@ build_anewarray (tree class_type, tree length)
host_integerp (length, 0)
? tree_low_cst (length, 0) : -1);
- return build (CALL_EXPR, promote_type (type),
- build_address_of (soft_anewarray_node),
- tree_cons (NULL_TREE, length,
- tree_cons (NULL_TREE, build_class_ref (class_type),
- build_tree_list (NULL_TREE,
- null_pointer_node))),
- NULL_TREE);
+ return build3 (CALL_EXPR, promote_type (type),
+ build_address_of (soft_anewarray_node),
+ tree_cons (NULL_TREE, length,
+ tree_cons (NULL_TREE, build_class_ref (class_type),
+ build_tree_list (NULL_TREE,
+ null_pointer_node))),
+ NULL_TREE);
}
/* Return a node the evaluates 'new TYPE[LENGTH]'. */
@@ -959,13 +962,13 @@ expand_java_multianewarray (tree class_type, int ndim)
for( i = 0; i < ndim; i++ )
args = tree_cons (NULL_TREE, pop_value (int_type_node), args);
- push_value (build (CALL_EXPR,
- promote_type (class_type),
- build_address_of (soft_multianewarray_node),
- tree_cons (NULL_TREE, build_class_ref (class_type),
- tree_cons (NULL_TREE,
- build_int_2 (ndim, 0), args )),
- NULL_TREE));
+ push_value (build3 (CALL_EXPR,
+ promote_type (class_type),
+ build_address_of (soft_multianewarray_node),
+ tree_cons (NULL_TREE, build_class_ref (class_type),
+ tree_cons (NULL_TREE,
+ build_int_2 (ndim, 0), args)),
+ NULL_TREE));
}
/* ARRAY[INDEX] <- RHS. build_java_check_indexed_type makes sure that
@@ -1001,7 +1004,7 @@ expand_java_arraystore (tree rhs_type_node)
}
array = build_java_arrayaccess (array, rhs_type_node, index);
- java_add_stmt (build (MODIFY_EXPR, TREE_TYPE (array), array, rhs_node));
+ java_add_stmt (build2 (MODIFY_EXPR, TREE_TYPE (array), array, rhs_node));
}
/* Expand the evaluation of ARRAY[INDEX]. build_java_check_indexed_type makes
@@ -1025,9 +1028,9 @@ expand_java_arrayload (tree lhs_type_node )
/* The only way we could get a node of type ptr_type_node at this
point is `aconst_null; arraylength' or something equivalent, so
unconditionally throw NullPointerException. */
- load_node = build (CALL_EXPR, lhs_type_node,
- build_address_of (soft_nullpointer_node),
- NULL_TREE, NULL_TREE);
+ load_node = build3 (CALL_EXPR, lhs_type_node,
+ build_address_of (soft_nullpointer_node),
+ NULL_TREE, NULL_TREE);
else
{
lhs_type_node = build_java_check_indexed_type (array_node, lhs_type_node);
@@ -1058,11 +1061,11 @@ expand_java_array_length (void)
static tree
build_java_monitor (tree call, tree object)
{
- return (build (CALL_EXPR,
+ return build3 (CALL_EXPR,
void_type_node,
build_address_of (call),
build_tree_list (NULL_TREE, object),
- NULL_TREE));
+ NULL_TREE);
}
/* Emit code for one of the PUSHC instructions. */
@@ -1094,12 +1097,12 @@ static void
expand_java_return (tree type)
{
if (type == void_type_node)
- java_add_stmt (build (RETURN_EXPR, void_type_node, NULL));
+ java_add_stmt (build1 (RETURN_EXPR, void_type_node, NULL));
else
{
tree retval = pop_value (type);
tree res = DECL_RESULT (current_function_decl);
- retval = build (MODIFY_EXPR, TREE_TYPE (res), res, retval);
+ retval = build2 (MODIFY_EXPR, TREE_TYPE (res), res, retval);
/* Handle the situation where the native integer type is smaller
than the JVM integer. It can happen for many cross compilers.
@@ -1111,7 +1114,7 @@ expand_java_return (tree type)
retval = build1(NOP_EXPR, TREE_TYPE(res), retval);
TREE_SIDE_EFFECTS (retval) = 1;
- java_add_stmt (build (RETURN_EXPR, TREE_TYPE (retval), retval));
+ java_add_stmt (build1 (RETURN_EXPR, TREE_TYPE (retval), retval));
}
}
@@ -1129,7 +1132,7 @@ expand_load_internal (int index, tree type, int pc)
Hopefully this all gets optimized out. */
copy = build_decl (VAR_DECL, NULL_TREE, type);
java_add_local_var (copy);
- java_add_stmt (build (MODIFY_EXPR, TREE_TYPE (var), copy, var));
+ java_add_stmt (build2 (MODIFY_EXPR, TREE_TYPE (var), copy, var));
push_value (copy);
}
@@ -1162,10 +1165,10 @@ expand_java_NEW (tree type)
if (! CLASS_LOADED_P (type))
load_class (type, 1);
safe_layout_class (type);
- push_value (build (CALL_EXPR, promote_type (type),
- build_address_of (alloc_node),
- build_tree_list (NULL_TREE, build_class_ref (type)),
- NULL_TREE));
+ push_value (build3 (CALL_EXPR, promote_type (type),
+ build_address_of (alloc_node),
+ build_tree_list (NULL_TREE, build_class_ref (type)),
+ NULL_TREE));
}
/* This returns an expression which will extract the class of an
@@ -1177,13 +1180,13 @@ build_get_class (tree value)
tree class_field = lookup_field (&dtable_type, get_identifier ("class"));
tree vtable_field = lookup_field (&object_type_node,
get_identifier ("vtable"));
- return build (COMPONENT_REF, class_ptr_type,
- build1 (INDIRECT_REF, dtable_type,
- build (COMPONENT_REF, dtable_ptr_type,
- build_java_indirect_ref (object_type_node, value,
- flag_check_references),
- vtable_field, NULL_TREE)),
- class_field, NULL_TREE);
+ tree tmp = build3 (COMPONENT_REF, dtable_ptr_type,
+ build_java_indirect_ref (object_type_node, value,
+ flag_check_references),
+ vtable_field, NULL_TREE);
+ return build3 (COMPONENT_REF, class_ptr_type,
+ build1 (INDIRECT_REF, dtable_type, tmp),
+ class_field, NULL_TREE);
}
/* This builds the tree representation of the `instanceof' operator.
@@ -1215,7 +1218,7 @@ build_instanceof (tree value, tree type)
/* Anything except `null' is an instance of Object. Likewise,
if the object is known to be an instance of the class, then
we only need to check for `null'. */
- expr = build (NE_EXPR, itype, value, null_pointer_node);
+ expr = build2 (NE_EXPR, itype, value, null_pointer_node);
}
else if (! TYPE_ARRAY_P (type)
&& ! TYPE_ARRAY_P (valtype)
@@ -1233,22 +1236,22 @@ build_instanceof (tree value, tree type)
else if (DECL_P (klass) && CLASS_FINAL (klass))
{
tree save = save_expr (value);
- expr = build (COND_EXPR, itype,
- build (NE_EXPR, boolean_type_node,
- save, null_pointer_node),
- build (EQ_EXPR, itype,
- build_get_class (save),
- build_class_ref (type)),
- boolean_false_node);
+ expr = build3 (COND_EXPR, itype,
+ build2 (NE_EXPR, boolean_type_node,
+ save, null_pointer_node),
+ build2 (EQ_EXPR, itype,
+ build_get_class (save),
+ build_class_ref (type)),
+ boolean_false_node);
}
else
{
- expr = build (CALL_EXPR, itype,
- build_address_of (soft_instanceof_node),
- tree_cons (NULL_TREE, value,
- build_tree_list (NULL_TREE,
- build_class_ref (type))),
- NULL_TREE);
+ expr = build3 (CALL_EXPR, itype,
+ build_address_of (soft_instanceof_node),
+ tree_cons (NULL_TREE, value,
+ build_tree_list (NULL_TREE,
+ build_class_ref (type))),
+ NULL_TREE);
}
TREE_SIDE_EFFECTS (expr) = TREE_SIDE_EFFECTS (value);
return expr;
@@ -1266,26 +1269,26 @@ static void
expand_java_CHECKCAST (tree type)
{
tree value = pop_value (ptr_type_node);
- value = build (CALL_EXPR, promote_type (type),
- build_address_of (soft_checkcast_node),
- tree_cons (NULL_TREE, build_class_ref (type),
- build_tree_list (NULL_TREE, value)),
- NULL_TREE);
+ value = build3 (CALL_EXPR, promote_type (type),
+ build_address_of (soft_checkcast_node),
+ tree_cons (NULL_TREE, build_class_ref (type),
+ build_tree_list (NULL_TREE, value)),
+ NULL_TREE);
push_value (value);
}
static void
expand_iinc (unsigned int local_var_index, int ival, int pc)
{
- tree local_var, res;
- tree constant_value;
+ tree local_var, res;
+ tree constant_value;
- flush_quick_stack ();
- local_var = find_local_variable (local_var_index, int_type_node, pc);
- constant_value = build_int_2 (ival, ival < 0 ? -1 : 0);
- res = fold (build (PLUS_EXPR, int_type_node, local_var, constant_value));
- java_add_stmt (build (MODIFY_EXPR, TREE_TYPE (local_var), local_var, res));
- update_aliases (local_var, local_var_index);
+ flush_quick_stack ();
+ local_var = find_local_variable (local_var_index, int_type_node, pc);
+ constant_value = build_int_2 (ival, ival < 0 ? -1 : 0);
+ res = fold (build2 (PLUS_EXPR, int_type_node, local_var, constant_value));
+ java_add_stmt (build2 (MODIFY_EXPR, TREE_TYPE (local_var), local_var, res));
+ update_aliases (local_var, local_var_index);
}
@@ -1328,11 +1331,11 @@ build_java_soft_divmod (enum tree_code op, tree type, tree op1, tree op2)
if (! call)
abort ();
- call = build (CALL_EXPR, type,
- build_address_of (call),
- tree_cons (NULL_TREE, arg1,
- build_tree_list (NULL_TREE, arg2)),
- NULL_TREE);
+ call = build3 (CALL_EXPR, type,
+ build_address_of (call),
+ tree_cons (NULL_TREE, arg1,
+ build_tree_list (NULL_TREE, arg2)),
+ NULL_TREE);
return call;
}
@@ -1353,36 +1356,36 @@ build_java_binop (enum tree_code op, tree type, tree arg1, tree arg2)
case LSHIFT_EXPR:
case RSHIFT_EXPR:
mask = build_int_2 (TYPE_PRECISION (TREE_TYPE (arg1)) - 1, 0);
- arg2 = fold (build (BIT_AND_EXPR, int_type_node, arg2, mask));
+ arg2 = fold (build2 (BIT_AND_EXPR, int_type_node, arg2, mask));
break;
case COMPARE_L_EXPR: /* arg1 > arg2 ? 1 : arg1 == arg2 ? 0 : -1 */
case COMPARE_G_EXPR: /* arg1 < arg2 ? -1 : arg1 == arg2 ? 0 : 1 */
arg1 = save_expr (arg1); arg2 = save_expr (arg2);
{
- tree ifexp1 = fold ( build (op == COMPARE_L_EXPR ? GT_EXPR : LT_EXPR,
+ tree ifexp1 = fold (build2 (op == COMPARE_L_EXPR ? GT_EXPR : LT_EXPR,
boolean_type_node, arg1, arg2));
- tree ifexp2 = fold ( build (EQ_EXPR, boolean_type_node, arg1, arg2));
- tree second_compare = fold (build (COND_EXPR, int_type_node,
- ifexp2, integer_zero_node,
- op == COMPARE_L_EXPR
- ? integer_minus_one_node
- : integer_one_node));
- return fold (build (COND_EXPR, int_type_node, ifexp1,
- op == COMPARE_L_EXPR ? integer_one_node
- : integer_minus_one_node,
- second_compare));
+ tree ifexp2 = fold (build2 (EQ_EXPR, boolean_type_node, arg1, arg2));
+ tree second_compare = fold (build3 (COND_EXPR, int_type_node,
+ ifexp2, integer_zero_node,
+ op == COMPARE_L_EXPR
+ ? integer_minus_one_node
+ : integer_one_node));
+ return fold (build3 (COND_EXPR, int_type_node, ifexp1,
+ op == COMPARE_L_EXPR ? integer_one_node
+ : integer_minus_one_node,
+ second_compare));
}
case COMPARE_EXPR:
arg1 = save_expr (arg1); arg2 = save_expr (arg2);
{
- tree ifexp1 = fold ( build (LT_EXPR, boolean_type_node, arg1, arg2));
- tree ifexp2 = fold ( build (GT_EXPR, boolean_type_node, arg1, arg2));
- tree second_compare = fold ( build (COND_EXPR, int_type_node,
+ tree ifexp1 = fold (build2 (LT_EXPR, boolean_type_node, arg1, arg2));
+ tree ifexp2 = fold (build2 (GT_EXPR, boolean_type_node, arg1, arg2));
+ tree second_compare = fold (build3 (COND_EXPR, int_type_node,
ifexp2, integer_one_node,
integer_zero_node));
- return fold (build (COND_EXPR, int_type_node,
- ifexp1, integer_minus_one_node, second_compare));
+ return fold (build3 (COND_EXPR, int_type_node,
+ ifexp1, integer_minus_one_node, second_compare));
}
case TRUNC_DIV_EXPR:
case TRUNC_MOD_EXPR:
@@ -1395,11 +1398,11 @@ build_java_binop (enum tree_code op, tree type, tree arg1, tree arg2)
arg1 = convert (double_type_node, arg1);
arg2 = convert (double_type_node, arg2);
}
- call = build (CALL_EXPR, double_type_node,
- build_address_of (soft_fmod_node),
- tree_cons (NULL_TREE, arg1,
- build_tree_list (NULL_TREE, arg2)),
- NULL_TREE);
+ call = build3 (CALL_EXPR, double_type_node,
+ build_address_of (soft_fmod_node),
+ tree_cons (NULL_TREE, arg1,
+ build_tree_list (NULL_TREE, arg2)),
+ NULL_TREE);
if (type != double_type_node)
call = convert (type, call);
return call;
@@ -1413,7 +1416,7 @@ build_java_binop (enum tree_code op, tree type, tree arg1, tree arg2)
break;
default: ;
}
- return fold (build (op, type, arg1, arg2));
+ return fold (build2 (op, type, arg1, arg2));
}
static void
@@ -1537,23 +1540,23 @@ build_field_ref (tree self_value, tree self_class, tree name)
(field_decl, &TYPE_OTABLE_METHODS (output_class)),
0);
tree field_offset
- = build (ARRAY_REF, integer_type_node,
- TYPE_OTABLE_DECL (output_class), otable_index,
- NULL_TREE, NULL_TREE);
+ = build4 (ARRAY_REF, integer_type_node,
+ TYPE_OTABLE_DECL (output_class), otable_index,
+ NULL_TREE, NULL_TREE);
tree address;
field_offset = fold (convert (sizetype, field_offset));
address
- = fold (build (PLUS_EXPR,
- build_pointer_type (TREE_TYPE (field_decl)),
- self_value, field_offset));
+ = fold (build2 (PLUS_EXPR,
+ build_pointer_type (TREE_TYPE (field_decl)),
+ self_value, field_offset));
return fold (build1 (INDIRECT_REF, TREE_TYPE (field_decl), address));
}
self_value = build_java_indirect_ref (TREE_TYPE (TREE_TYPE (self_value)),
self_value, check);
- return fold (build (COMPONENT_REF, TREE_TYPE (field_decl),
- self_value, field_decl, NULL_TREE));
+ return fold (build3 (COMPONENT_REF, TREE_TYPE (field_decl),
+ self_value, field_decl, NULL_TREE));
}
}
@@ -1617,11 +1620,11 @@ expand_compare (enum tree_code condition, tree value1, tree value2,
int target_pc)
{
tree target = lookup_label (target_pc);
- tree cond = fold (build (condition, boolean_type_node, value1, value2));
+ tree cond = fold (build2 (condition, boolean_type_node, value1, value2));
java_add_stmt
- (build (COND_EXPR, void_type_node, java_truthvalue_conversion (cond),
- build (GOTO_EXPR, void_type_node, target),
- build_java_empty_stmt ()));
+ (build3 (COND_EXPR, void_type_node, java_truthvalue_conversion (cond),
+ build1 (GOTO_EXPR, void_type_node, target),
+ build_java_empty_stmt ()));
}
/* Emit code for a TEST-type opcode. */
@@ -1655,7 +1658,7 @@ expand_java_goto (int target_pc)
{
tree target_label = lookup_label (target_pc);
flush_quick_stack ();
- java_add_stmt (build (GOTO_EXPR, void_type_node, target_label));
+ java_add_stmt (build1 (GOTO_EXPR, void_type_node, target_label));
}
static tree
@@ -1664,15 +1667,15 @@ expand_java_switch (tree selector, int default_pc)
tree switch_expr, x;
flush_quick_stack ();
- switch_expr = build (SWITCH_EXPR, TREE_TYPE (selector), selector,
- NULL_TREE, NULL_TREE);
+ switch_expr = build3 (SWITCH_EXPR, TREE_TYPE (selector), selector,
+ NULL_TREE, NULL_TREE);
java_add_stmt (switch_expr);
- x = build (CASE_LABEL_EXPR, void_type_node, NULL_TREE, NULL_TREE,
- create_artificial_label ());
+ x = build3 (CASE_LABEL_EXPR, void_type_node, NULL_TREE, NULL_TREE,
+ create_artificial_label ());
append_to_statement_list (x, &SWITCH_BODY (switch_expr));
- x = build (GOTO_EXPR, void_type_node, lookup_label (default_pc));
+ x = build1 (GOTO_EXPR, void_type_node, lookup_label (default_pc));
append_to_statement_list (x, &SWITCH_BODY (switch_expr));
return switch_expr;
@@ -1686,11 +1689,11 @@ expand_java_add_case (tree switch_expr, int match, int target_pc)
value = build_int_2 (match, match < 0 ? -1 : 0);
TREE_TYPE (value) = TREE_TYPE (switch_expr);
- x = build (CASE_LABEL_EXPR, void_type_node, value, NULL_TREE,
- create_artificial_label ());
+ x = build3 (CASE_LABEL_EXPR, void_type_node, value, NULL_TREE,
+ create_artificial_label ());
append_to_statement_list (x, &SWITCH_BODY (switch_expr));
- x = build (GOTO_EXPR, void_type_node, lookup_label (target_pc));
+ x = build1 (GOTO_EXPR, void_type_node, lookup_label (target_pc));
append_to_statement_list (x, &SWITCH_BODY (switch_expr));
}
@@ -1756,10 +1759,10 @@ build_class_init (tree clas, tree expr)
if (always_initialize_class_p)
{
- init = build (CALL_EXPR, void_type_node,
- build_address_of (soft_initclass_node),
- build_tree_list (NULL_TREE, build_class_ref (clas)),
- NULL_TREE);
+ init = build3 (CALL_EXPR, void_type_node,
+ build_address_of (soft_initclass_node),
+ build_tree_list (NULL_TREE, build_class_ref (clas)),
+ NULL_TREE);
TREE_SIDE_EFFECTS (init) = 1;
}
else
@@ -1787,25 +1790,25 @@ build_class_init (tree clas, tree expr)
DECL_IGNORED_P (*init_test_decl) = 1;
}
- init = build (CALL_EXPR, void_type_node,
- build_address_of (soft_initclass_node),
- build_tree_list (NULL_TREE, build_class_ref (clas)),
- NULL_TREE);
+ init = build3 (CALL_EXPR, void_type_node,
+ build_address_of (soft_initclass_node),
+ build_tree_list (NULL_TREE, build_class_ref (clas)),
+ NULL_TREE);
TREE_SIDE_EFFECTS (init) = 1;
- init = build (COND_EXPR, void_type_node,
- build (EQ_EXPR, boolean_type_node,
- *init_test_decl, boolean_false_node),
- init, integer_zero_node);
+ init = build3 (COND_EXPR, void_type_node,
+ build2 (EQ_EXPR, boolean_type_node,
+ *init_test_decl, boolean_false_node),
+ init, integer_zero_node);
TREE_SIDE_EFFECTS (init) = 1;
- init = build (COMPOUND_EXPR, TREE_TYPE (expr), init,
- build (MODIFY_EXPR, boolean_type_node,
- *init_test_decl, boolean_true_node));
+ init = build2 (COMPOUND_EXPR, TREE_TYPE (expr), init,
+ build2 (MODIFY_EXPR, boolean_type_node,
+ *init_test_decl, boolean_true_node));
TREE_SIDE_EFFECTS (init) = 1;
}
if (expr != NULL_TREE)
{
- expr = build (COMPOUND_EXPR, TREE_TYPE (expr), init, expr);
+ expr = build2 (COMPOUND_EXPR, TREE_TYPE (expr), init, expr);
TREE_SIDE_EFFECTS (expr) = 1;
return expr;
}
@@ -1832,9 +1835,9 @@ build_known_method_ref (tree method, tree method_type ATTRIBUTE_UNUSED,
tree table_index
= build_int_2 (get_symbol_table_index
(method, &TYPE_ATABLE_METHODS (output_class)), 0);
- func = build (ARRAY_REF, method_ptr_type_node,
- TYPE_ATABLE_DECL (output_class), table_index,
- NULL_TREE, NULL_TREE);
+ func = build4 (ARRAY_REF, method_ptr_type_node,
+ TYPE_ATABLE_DECL (output_class), table_index,
+ NULL_TREE, NULL_TREE);
}
func = convert (method_ptr_type_node, func);
}
@@ -1860,8 +1863,9 @@ build_known_method_ref (tree method, tree method_type ATTRIBUTE_UNUSED,
ncode_ident = get_identifier ("ncode");
if (methods_ident == NULL_TREE)
methods_ident = get_identifier ("methods");
- ref = build (COMPONENT_REF, method_ptr_type_node, ref,
- lookup_field (&class_type_node, methods_ident), NULL_TREE);
+ ref = build3 (COMPONENT_REF, method_ptr_type_node, ref,
+ lookup_field (&class_type_node, methods_ident),
+ NULL_TREE);
for (meth = TYPE_METHODS (self_type);
; meth = TREE_CHAIN (meth))
{
@@ -1873,12 +1877,12 @@ build_known_method_ref (tree method, tree method_type ATTRIBUTE_UNUSED,
method_index++;
}
method_index *= int_size_in_bytes (method_type_node);
- ref = fold (build (PLUS_EXPR, method_ptr_type_node,
- ref, build_int_2 (method_index, 0)));
+ ref = fold (build2 (PLUS_EXPR, method_ptr_type_node,
+ ref, build_int_2 (method_index, 0)));
ref = build1 (INDIRECT_REF, method_type_node, ref);
- func = build (COMPONENT_REF, nativecode_ptr_type_node,
- ref, lookup_field (&method_type_node, ncode_ident),
- NULL_TREE);
+ func = build3 (COMPONENT_REF, nativecode_ptr_type_node,
+ ref, lookup_field (&method_type_node, ncode_ident),
+ NULL_TREE);
}
return func;
}
@@ -1901,8 +1905,8 @@ invoke_build_dtable (int is_invoke_interface, tree arg_list)
dtable_ident = get_identifier ("vtable");
dtable = build_java_indirect_ref (object_type_node, objectref,
flag_check_references);
- dtable = build (COMPONENT_REF, dtable_ptr_type, dtable,
- lookup_field (&object_type_node, dtable_ident), NULL_TREE);
+ dtable = build3 (COMPONENT_REF, dtable_ptr_type, dtable,
+ lookup_field (&object_type_node, dtable_ident), NULL_TREE);
return dtable;
}
@@ -1956,9 +1960,9 @@ build_invokevirtual (tree dtable, tree method)
otable_index
= build_int_2 (get_symbol_table_index
(method, &TYPE_OTABLE_METHODS (output_class)), 0);
- method_index = build (ARRAY_REF, integer_type_node,
- TYPE_OTABLE_DECL (output_class),
- otable_index, NULL_TREE, NULL_TREE);
+ method_index = build4 (ARRAY_REF, integer_type_node,
+ TYPE_OTABLE_DECL (output_class),
+ otable_index, NULL_TREE, NULL_TREE);
}
else
{
@@ -1974,8 +1978,8 @@ build_invokevirtual (tree dtable, tree method)
size_int (TARGET_VTABLE_USES_DESCRIPTORS));
}
- func = fold (build (PLUS_EXPR, nativecode_ptr_ptr_type_node, dtable,
- convert (nativecode_ptr_ptr_type_node, method_index)));
+ func = fold (build2 (PLUS_EXPR, nativecode_ptr_ptr_type_node, dtable,
+ convert (nativecode_ptr_ptr_type_node, method_index)));
if (TARGET_VTABLE_USES_DESCRIPTORS)
func = build1 (NOP_EXPR, nativecode_ptr_type_node, func);
@@ -2003,8 +2007,8 @@ build_invokeinterface (tree dtable, tree method)
dtable = build_java_indirect_ref (dtable_type, dtable,
flag_check_references);
- dtable = build (COMPONENT_REF, class_ptr_type, dtable,
- lookup_field (&dtable_type, class_ident), NULL_TREE);
+ dtable = build3 (COMPONENT_REF, class_ptr_type, dtable,
+ lookup_field (&dtable_type, class_ident), NULL_TREE);
interface = DECL_CONTEXT (method);
if (! CLASS_INTERFACE (TYPE_NAME (interface)))
@@ -2016,9 +2020,9 @@ build_invokeinterface (tree dtable, tree method)
otable_index
= build_int_2 (get_symbol_table_index
(method, &TYPE_OTABLE_METHODS (output_class)), 0);
- idx = build (ARRAY_REF, integer_type_node,
- TYPE_OTABLE_DECL (output_class), otable_index,
- NULL_TREE, NULL_TREE);
+ idx = build4 (ARRAY_REF, integer_type_node,
+ TYPE_OTABLE_DECL (output_class), otable_index,
+ NULL_TREE, NULL_TREE);
}
else
idx = build_int_2 (get_interface_method_index (method, interface), 0);
@@ -2027,9 +2031,9 @@ build_invokeinterface (tree dtable, tree method)
tree_cons (NULL_TREE, build_class_ref (interface),
build_tree_list (NULL_TREE, idx)));
- return build (CALL_EXPR, ptr_type_node,
- build_address_of (soft_lookupinterfacemethod_node),
- lookup_arg, NULL_TREE);
+ return build3 (CALL_EXPR, ptr_type_node,
+ build_address_of (soft_lookupinterfacemethod_node),
+ lookup_arg, NULL_TREE);
}
/* Expand one of the invoke_* opcodes.
@@ -2150,13 +2154,14 @@ expand_invoke (int opcode, int method_ref_index, int nargs ATTRIBUTE_UNUSED)
else
func = build1 (NOP_EXPR, build_pointer_type (method_type), func);
- call = build (CALL_EXPR, TREE_TYPE (method_type), func, arg_list, NULL_TREE);
+ call = build3 (CALL_EXPR, TREE_TYPE (method_type),
+ func, arg_list, NULL_TREE);
TREE_SIDE_EFFECTS (call) = 1;
call = check_for_builtin (method, call);
if (check != NULL_TREE)
{
- call = build (COMPOUND_EXPR, TREE_TYPE (call), check, call);
+ call = build2 (COMPOUND_EXPR, TREE_TYPE (call), check, call);
TREE_SIDE_EFFECTS (call) = 1;
}
@@ -2231,11 +2236,11 @@ build_jni_stub (tree method)
TREE_TYPE (block) = TREE_TYPE (TREE_TYPE (method));
/* Compute the local `env' by calling _Jv_GetJNIEnvNewFrame. */
- body = build (MODIFY_EXPR, ptr_type_node, env_var,
- build (CALL_EXPR, ptr_type_node,
- build_address_of (soft_getjnienvnewframe_node),
- build_tree_list (NULL_TREE, klass),
- NULL_TREE));
+ body = build2 (MODIFY_EXPR, ptr_type_node, env_var,
+ build3 (CALL_EXPR, ptr_type_node,
+ build_address_of (soft_getjnienvnewframe_node),
+ build_tree_list (NULL_TREE, klass),
+ NULL_TREE));
CAN_COMPLETE_NORMALLY (body) = 1;
/* All the arguments to this method become arguments to the
@@ -2294,40 +2299,40 @@ build_jni_stub (tree method)
jni_func_type = build_pointer_type (tem);
- jnifunc = build (COND_EXPR, ptr_type_node,
- meth_var, meth_var,
- build (MODIFY_EXPR, ptr_type_node,
- meth_var,
- build (CALL_EXPR, ptr_type_node,
- build_address_of (soft_lookupjnimethod_node),
- lookup_arg, NULL_TREE)));
+ jnifunc = build3 (COND_EXPR, ptr_type_node,
+ meth_var, meth_var,
+ build2 (MODIFY_EXPR, ptr_type_node, meth_var,
+ build3 (CALL_EXPR, ptr_type_node,
+ build_address_of
+ (soft_lookupjnimethod_node),
+ lookup_arg, NULL_TREE)));
/* Now we make the actual JNI call via the resulting function
pointer. */
- call = build (CALL_EXPR, TREE_TYPE (TREE_TYPE (method)),
- build1 (NOP_EXPR, jni_func_type, jnifunc),
- args, NULL_TREE);
+ call = build3 (CALL_EXPR, TREE_TYPE (TREE_TYPE (method)),
+ build1 (NOP_EXPR, jni_func_type, jnifunc),
+ args, NULL_TREE);
/* If the JNI call returned a result, capture it here. If we had to
unwrap JNI object results, we would do that here. */
if (res_var != NULL_TREE)
- call = build (MODIFY_EXPR, TREE_TYPE (TREE_TYPE (method)),
- res_var, call);
+ call = build2 (MODIFY_EXPR, TREE_TYPE (TREE_TYPE (method)),
+ res_var, call);
TREE_SIDE_EFFECTS (call) = 1;
CAN_COMPLETE_NORMALLY (call) = 1;
- body = build (COMPOUND_EXPR, void_type_node, body, call);
+ body = build2 (COMPOUND_EXPR, void_type_node, body, call);
TREE_SIDE_EFFECTS (body) = 1;
/* Now free the environment we allocated. */
- call = build (CALL_EXPR, ptr_type_node,
- build_address_of (soft_jnipopsystemframe_node),
- build_tree_list (NULL_TREE, env_var),
- NULL_TREE);
+ call = build3 (CALL_EXPR, ptr_type_node,
+ build_address_of (soft_jnipopsystemframe_node),
+ build_tree_list (NULL_TREE, env_var),
+ NULL_TREE);
TREE_SIDE_EFFECTS (call) = 1;
CAN_COMPLETE_NORMALLY (call) = 1;
- body = build (COMPOUND_EXPR, void_type_node, body, call);
+ body = build2 (COMPOUND_EXPR, void_type_node, body, call);
TREE_SIDE_EFFECTS (body) = 1;
/* Finally, do the return. */
@@ -2344,16 +2349,16 @@ build_jni_stub (tree method)
drt = TREE_TYPE (DECL_RESULT (method));
if (drt != TREE_TYPE (res_var))
res_var = build1 (CONVERT_EXPR, drt, res_var);
- res_var = build (MODIFY_EXPR, drt, DECL_RESULT (method), res_var);
+ res_var = build2 (MODIFY_EXPR, drt, DECL_RESULT (method), res_var);
TREE_SIDE_EFFECTS (res_var) = 1;
}
- body = build (COMPOUND_EXPR, void_type_node, body,
- build1 (RETURN_EXPR, res_type, res_var));
+ body = build2 (COMPOUND_EXPR, void_type_node, body,
+ build1 (RETURN_EXPR, res_type, res_var));
TREE_SIDE_EFFECTS (body) = 1;
- bind = build (BIND_EXPR, void_type_node, BLOCK_VARS (block),
- body, block);
+ bind = build3 (BIND_EXPR, void_type_node, BLOCK_VARS (block),
+ body, block);
return bind;
}
@@ -2435,8 +2440,8 @@ expand_java_field_op (int is_static, int is_putting, int field_ref_index)
field_decl, field_decl);
}
}
- java_add_stmt (build (MODIFY_EXPR,
- TREE_TYPE (field_ref), field_ref, new_value));
+ java_add_stmt (build2 (MODIFY_EXPR, TREE_TYPE (field_ref),
+ field_ref, new_value));
}
else
push_value (field_ref);
@@ -2642,7 +2647,7 @@ expand_byte_code (JCF *jcf, tree method)
tree label = lookup_label (PC);
flush_quick_stack ();
if ((instruction_bits [PC] & BCODE_TARGET) != 0)
- java_add_stmt (build (LABEL_EXPR, void_type_node, label));
+ java_add_stmt (build1 (LABEL_EXPR, void_type_node, label));
if (LABEL_VERIFIED (label) || PC == 0)
load_type_state (label);
}
@@ -2931,7 +2936,7 @@ process_jvm_instruction (int PC, const unsigned char* byte_ops,
type = TREE_TYPE (value); \
decl = find_local_variable (index, type, oldpc); \
set_local_type (index, type); \
- java_add_stmt (build (MODIFY_EXPR, type, decl, value)); \
+ java_add_stmt (build2 (MODIFY_EXPR, type, decl, value)); \
update_aliases (decl, index); \
}
@@ -3191,7 +3196,7 @@ force_evaluation_order (tree node)
{
tree saved = save_expr (force_evaluation_order (TREE_VALUE (arg)));
cmp = (cmp == NULL_TREE ? saved :
- build (COMPOUND_EXPR, void_type_node, cmp, saved));
+ build2 (COMPOUND_EXPR, void_type_node, cmp, saved));
TREE_VALUE (arg) = saved;
}
@@ -3200,7 +3205,7 @@ force_evaluation_order (tree node)
if (cmp)
{
- cmp = build (COMPOUND_EXPR, TREE_TYPE (node), cmp, node);
+ cmp = build2 (COMPOUND_EXPR, TREE_TYPE (node), cmp, node);
if (TREE_TYPE (cmp) != void_type_node)
cmp = save_expr (cmp);
CAN_COMPLETE_NORMALLY (cmp) = CAN_COMPLETE_NORMALLY (node);