diff options
author | Richard Kenner <kenner@vlsi1.ultra.nyu.edu> | 2000-03-17 17:31:58 +0000 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 2000-03-17 12:31:58 -0500 |
commit | 665f250366b2cd1528c32b0d7d2fea6aae006e85 (patch) | |
tree | 0d31e5a8b4d8432cfb9d20e84ce3b4a97056fdf0 /gcc/cp/typeck.c | |
parent | 63f034bfe3afe558171d79c95166e3e86ee2c515 (diff) | |
download | gcc-665f250366b2cd1528c32b0d7d2fea6aae006e85.zip gcc-665f250366b2cd1528c32b0d7d2fea6aae006e85.tar.gz gcc-665f250366b2cd1528c32b0d7d2fea6aae006e85.tar.bz2 |
* Clean up usages of TREE_INT_CST_LOW.
* c-parse.in (RESTORE_WARN_FLAGS): Use tree_low_cst.
* c-parse.y, c-parse.c, objc/objc-parse.y, objc/objc-parse.c:
Regenerated.
* c-tree.h (min_precision): Move declaration to here.
* c-typeck.c (build_binary_op): Use host_integerp and tree_low_cst.
(build_unary_op, add_pending_init): Use bit_position.
(pending_init_member, process_init_element): Likewise.
(really_start_incremental_init, push_init_level, pop_init_level):
Don't make copies of nodes or modify them in place, use consistent
types when tracking positions, and use tree routines computations.
(set_init_index, output_init_element): Likewise.
(output_pending_init_elements, process_init_element): Likewise.
* dbxout.c (dbxout_type_fields): Use bit_position, host_integerp,
tree_low_cst and int_bit_position; also minor cleanup.
(dbxout_type_method_1, dbxout_range_type, dbxout_type): Likewise.
(print_cst_octal): Precision is unsigned.
(dbxout_symbol): Ensure DECL_INITIAL is in-range and use tree_low_cst.
* dwarf2out.c (ceiling): Input and output are unsigned HOST_WIDE_INT.
(simple_type_align_in_bits): Result is unsigned int.
Use tree_int_low_cst and host_integerp.
(simple_type_size_in_bits): Result is unsigned HOST_WIDE_INT.
(field_byte_offset): Result is HOST_WIDE_INT.
Change types of internal variables so alignments are unsigned int,
offsets are HOST_WIDE_INT and sizes are unsigned HOST_WIDE_INT.
Use host_integerp, tree_low_cst, and int_bit_position.
(add_bit_offset_attribute): Likewise.
(add_data_member_location_attribute): Use tree_cst_low.
(add_bound_info): Use host_integerp, integer_zerop, and integer_onep.
(add_bit_size_attribute): Use tree_low_cst.
(add_pure_or_virtual_attribute, gen_enumeration_type_die): Likewise.
* dwarfout.c: Similar changes to dwarf2out.c.
* expr.c (expand_expr, case ARRAY_REF): Remove redundant code.
* genoutput.c (n_occurences): Return -1 for null string.
(strip_whitespace): Accept null string and make into function.
(scan_operands): Reflect above changes.
* sdbout.c (plain_type_1): Use host_integerp and tree_low_cst.
(sdbout_field_types, sdbout_one_type): Likewise; also use bit_position.
* ssa.c (rename_registers): Add missing cast of arg to bzero.
* tree.c (int_size_in_bytes): Check for too big to represent.
(bit_position, int_bit_position, host_integerp, tree_low_cst): New fns.
* tree.h (host_integerp, tree_low_cst, bit_position, int_bit_position):
New declarations.
(min_precision): Delete from here.
* varasm.c (decode_addr_const): Use host_integerp, bit_position,
and int_bit_position.
* objc/objc-act.c (encode_method_prototype): Sizes are HOST_WIDE_INT.
(encode_method_def): Likewise.
(build_ivar_list_initializer): Use int_bit_position.
(generate_shared_structures): Convert size.
(encode_type, encode_complete_bitfield): Use integer_zerop.
(encode_bitfield): Use tree_low_cst and int_bit_position.
* ch/typeck.c (min_precision): New function.
(build_chill_slice): Use host_integerp and tree_low_cst.
(expand_constant_to_buffer): Likewise and also int_bit_position.
LO is unsigned HOST_WIDE_INT
(build_chill_array_ref_1): Make `i' be HOST_WIDE_INT; use tree_low_cst.
(extract_constant_from_buffer): Sizes are now HOST_WIDE_INT.
Use host_integerp and tree_low_cst.
(build_chill_bin_type): Use host_integerp and tree_low_cst.
(layout_chill_range_type): Use tree_int_cst_sgn, compare_tree_int,
tree_low_cst, and min_precision.
(apply_chill_array_layout): Cleanups for types of variables
and use tree_int_cst_sgn, compare_tree_int, and tree_low_cst.
(apply_chill_field_layout): Likewise.
* cp/class.c (build_vbase_path): Use integer_zerop.
(build_vtable_entry): Use tree_low_cst.
(get_vfield_offset): Use bit_position.
(dfs_modify_vtables): New variable vindex_val; `i' is HOST_WIDE_INT.
Use tree_low_cst.
(check_bitfield_decl): Set DECL_SIZE using convert.
(build_base_field): Set DECL_SIZE and DECL_SIZE_UNIT using size_binop.
(layout_virtual_bases): DSIZE is unsigned HOST_WIDE_INT.
Use tree_low_cst.
(finish_struct_1): Use bit_position.
(dump_class_hierarchy): Use tree_low_cst.
* cp/cp-tree.h (min_precision): Add declaration.
* cp/decl.c (xref_tag, xref_basetypes): Use tree_low_cst.
* cp/error.c (dump_type_suffix): Use host_integerp and tree_low_cst.
(dump_expr): Use integer_zerop, host_integerp, and tree_low_cst.
* cp/expr.c (cplus_expand_constant): Use bit_position.
* cp/init.c (build_vec_init): Use host_integerp and tree_low_cst.
* cp/rtti.c (get_base_offset): Use bit_position.
* cp/typeck.c (build_binary_op): Use integer_zerop, compare_tree_int,
host_integerp, and tree_low_cst.
(pointer_int_sum): Use integer_zerop.
(build_component_addr): Use bit_position.
* java/class.c (make_field_value): Properly handle sizes.
(get_dispatch_vector): Use tree_low_cst and host_integerp.
(layout_class_method): Count using trees.
* java/decl.c (push_promoted_type): Set TYPE_{MIN,MAX}_VALUE with
copy_node.
* java/expr.c (java_array_data_offset): Use int_bit_position.
(build_newarray, build_anewarray): Use host_integerp and tree_low_cst.
(build_invokevirtual): Use tree_low_cst and do computations with trees.
From-SVN: r32607
Diffstat (limited to 'gcc/cp/typeck.c')
-rw-r--r-- | gcc/cp/typeck.c | 37 |
1 files changed, 14 insertions, 23 deletions
diff --git a/gcc/cp/typeck.c b/gcc/cp/typeck.c index 6e74e3b..a92c1fe 100644 --- a/gcc/cp/typeck.c +++ b/gcc/cp/typeck.c @@ -3512,11 +3512,9 @@ build_binary_op (code, orig_op0, orig_op1) warning ("right shift count is negative"); else { - if (TREE_INT_CST_LOW (op1) | TREE_INT_CST_HIGH (op1)) + if (! integer_zerop (op1)) short_shift = 1; - if (TREE_INT_CST_HIGH (op1) != 0 - || ((unsigned HOST_WIDE_INT) TREE_INT_CST_LOW (op1) - >= TYPE_PRECISION (type0))) + if (compare_tree_int (op1, TYPE_PRECISION (type0)) >= 0) warning ("right shift count >= width of type"); } } @@ -3537,9 +3535,7 @@ build_binary_op (code, orig_op0, orig_op1) { if (tree_int_cst_lt (op1, integer_zero_node)) warning ("left shift count is negative"); - else if (TREE_INT_CST_HIGH (op1) != 0 - || ((unsigned HOST_WIDE_INT) TREE_INT_CST_LOW (op1) - >= TYPE_PRECISION (type0))) + else if (compare_tree_int (op1, TYPE_PRECISION (type0)) >= 0) warning ("left shift count >= width of type"); } /* Convert the shift-count to an integer, regardless of @@ -3561,9 +3557,7 @@ build_binary_op (code, orig_op0, orig_op1) if (tree_int_cst_lt (op1, integer_zero_node)) warning ("%s rotate count is negative", (code == LROTATE_EXPR) ? "left" : "right"); - else if (TREE_INT_CST_HIGH (op1) != 0 - || ((unsigned HOST_WIDE_INT) TREE_INT_CST_LOW (op1) - >= TYPE_PRECISION (type0))) + else if (compare_tree_int (op1, TYPE_PRECISION (type0)) >= 0) warning ("%s rotate count >= width of type", (code == LROTATE_EXPR) ? "left" : "right"); } @@ -3894,8 +3888,7 @@ build_binary_op (code, orig_op0, orig_op1) if (TYPE_PRECISION (TREE_TYPE (arg0)) < TYPE_PRECISION (result_type) /* We can shorten only if the shift count is less than the number of bits in the smaller type size. */ - && TREE_INT_CST_HIGH (op1) == 0 - && TYPE_PRECISION (TREE_TYPE (arg0)) > TREE_INT_CST_LOW (op1) + && compare_tree_int (op1, TYPE_PRECISION (TREE_TYPE (arg0))) < 0 /* If arg is sign-extended and then unsigned-shifted, we can simulate this with a signed shift in arg's type only if the extended result is at least twice as wide @@ -4009,25 +4002,24 @@ build_binary_op (code, orig_op0, orig_op1) if (TREE_CODE (primop1) == BIT_NOT_EXPR) primop1 = get_narrower (TREE_OPERAND (op1, 0), &unsignedp1); - if (TREE_CODE (primop0) == INTEGER_CST - || TREE_CODE (primop1) == INTEGER_CST) + if (host_integerp (primop0, 0) || host_integerp (primop1, 0)) { tree primop; HOST_WIDE_INT constant, mask; int unsignedp; - unsigned bits; + unsigned int bits; - if (TREE_CODE (primop0) == INTEGER_CST) + if (host_integerp (primop0, 0)) { primop = primop1; unsignedp = unsignedp1; - constant = TREE_INT_CST_LOW (primop0); + constant = tree_low_cst (primop0, 0); } else { primop = primop0; unsignedp = unsignedp0; - constant = TREE_INT_CST_LOW (primop1); + constant = tree_low_cst (primop1, 0); } bits = TYPE_PRECISION (TREE_TYPE (primop)); @@ -4157,9 +4149,7 @@ pointer_int_sum (resultcode, ptrop, intop) /* Needed to make OOPS V2R3 work. */ intop = folded; - if (TREE_CODE (intop) == INTEGER_CST - && TREE_INT_CST_LOW (intop) == 0 - && TREE_INT_CST_HIGH (intop) == 0) + if (integer_zerop (intop)) return ptrop; /* If what we are about to multiply by the size of the elements @@ -4295,11 +4285,12 @@ build_component_addr (arg, argtype) /* This conversion is harmless. */ rval = convert_force (argtype, rval, 0); - if (! integer_zerop (DECL_FIELD_BITPOS (field))) + if (! integer_zerop (bit_position (field))) { - tree offset = size_binop (EASY_DIV_EXPR, DECL_FIELD_BITPOS (field), + tree offset = size_binop (EASY_DIV_EXPR, bit_position (field), bitsize_int (BITS_PER_UNIT)); int flag = TREE_CONSTANT (rval); + offset = convert (sizetype, offset); rval = fold (build (PLUS_EXPR, argtype, rval, cp_convert (argtype, offset))); |