2013-11-21 Kenneth Zadeck Mike Stump Richard Sandiford Kyrylo Tkachov * alias.c (ao_ref_from_mem): Use wide-int interfaces. (rtx_equal_for_memref_p): Update comment. (adjust_offset_for_component_ref): Use wide-int interfaces. * builtins.c (get_object_alignment_2): Likewise. (c_readstr): Likewise. (target_char_cast): Add comment. (determine_block_size): Use wide-int interfaces. (expand_builtin_signbit): Likewise. (fold_builtin_int_roundingfn): Likewise. (fold_builtin_bitop): Likewise. (fold_builtin_bswap): Likewise. (fold_builtin_logarithm): Use signop. (fold_builtin_pow): Likewise. (fold_builtin_memory_op): Use wide-int interfaces. (fold_builtin_object_size): Likewise. * cfgloop.c (alloc_loop): Initialize nb_iterations_upper_bound and nb_iterations_estimate. (record_niter_bound): Use wide-int interfaces. (get_estimated_loop_iterations_int): Likewise. (get_estimated_loop_iterations): Likewise. (get_max_loop_iterations): Likewise. * cfgloop.h: Include wide-int.h. (struct nb_iter_bound): Change bound to widest_int. (struct loop): Change nb_iterations_upper_bound and nb_iterations_estimate to widest_int. (record_niter_bound): Switch to use widest_int. (get_estimated_loop_iterations): Likewise. (get_max_loop_iterations): Likewise. (gcov_type_to_double_int): Rename to gcov_type_to_wide_int and update for wide-int. * cgraph.c (cgraph_add_thunk): Use wide-int interfaces. * combine.c (try_combine): Likewise. (subst): Use CONST_SCALAR_INT_P rather than CONST_INT_P. * config/aarch64/aarch64.c (aapcs_vfp_sub_candidate): Use wide-int interfaces. (aarch64_float_const_representable_p): Likewise. * config/arc/arc.c: Include wide-int.h. (arc_can_use_doloop_p): Use wide-int interfaces. * config/arm/arm.c (aapcs_vfp_sub_candidate): Likewise. (vfp3_const_double_index): Likewise. * config/avr/avr.c (avr_out_round): Likewise. (avr_fold_builtin): Likewise. * config/bfin/bfin.c (bfin_local_alignment): Likewise. (bfin_can_use_doloop_p): Likewise. * config/darwin.c (darwin_mergeable_constant_section): Likewise. (machopic_select_rtx_section): Update to handle CONST_WIDE_INT. * config/i386/i386.c: Include wide-int.h. (ix86_data_alignment): Use wide-int interfaces. (ix86_local_alignment): Likewise. (ix86_emit_swsqrtsf): Update real_from_integer. * config/msp430/msp430.c (msp430_attr): Use wide-int interfaces. * config/nds32/nds32.c (nds32_insert_attributes): Likewise. * config/rs6000/predicates.md (any_operand): Add const_wide_int. (zero_constant): Likewise. (input_operand): Likewise. (splat_input_operand): Likewise. (non_logical_cint_operand): Change const_double to const_wide_int. * config/rs6000/rs6000.c (num_insns_constant): Handle CONST_WIDE_INT. (easy_altivec_constant): Remove comment. (paired_expand_vector_init): Use CONSTANT_P. (rs6000_legitimize_address): Handle CONST_WIDE_INT. (rs6000_emit_move): Update checks. (rs6000_aggregate_candidate): Use wide-int interfaces. (rs6000_expand_ternop_builtin): Likewise. (rs6000_output_move_128bit): Handle CONST_WIDE_INT. (rs6000_assemble_integer): Likewise. (rs6000_hash_constant): Likewise. (output_toc): Likewise. (rs6000_rtx_costs): Likewise. (rs6000_emit_swrsqrt); Update call to real_from_integer. * config/rs6000/rs6000-c.c: Include wide-int.h. (altivec_resolve_overloaded_builtin): Use wide-int interfaces. * config/rs6000/rs6000.h (TARGET_SUPPORTS_WIDE_INT): New. * config/rs6000/rs6000.md: Use const_scalar_int_operand. Handle CONST_WIDE_INT. * config/sol2-c.c (solaris_pragma_align): Change low to unsigned HWI. Use tree_fits_uhwi_p. * config/sparc/sparc.c: Include wide-int.h. (sparc_fold_builtin): Use wide-int interfaces. * config/vax/vax.c: Include wide-int.h. (vax_float_literal): Use real_from_integer. * coretypes.h (struct hwivec_def): New. (hwivec): New. (const_hwivec): New. * cse.c (hash_rtx_cb): Handle CONST_WIDE_INT. (equiv_constant): Handle CONST_WIDE_INT. * cselib.c (rtx_equal_for_cselib_1): Use CASE_CONST_UNIQUE. (cselib_hash_rtx): Handle CONST_WIDE_INT. * dbxout.c (stabstr_U): Use wide-int interfaces. (dbxout_type): Update to use cst_fits_shwi_p. * defaults.h (LOG2_BITS_PER_UNIT): Define. (TARGET_SUPPORTS_WIDE_INT): Add default. * dfp.c: Include wide-int.h. (decimal_real_to_integer2): Use wide-int interfaces and rename to decimal_real_to_integer. * dfp.h (decimal_real_to_integer2): Return a wide_int and rename to decimal_real_to_integer. * doc/generic.texi (Constant expressions): Update for wide_int. * doc/rtl.texi (const_double): Likewise. (const_wide_int, CONST_WIDE_INT, CONST_WIDE_INT_VEC): New. (CONST_WIDE_INT_NUNITS, CONST_WIDE_INT_ELT): New. * doc/tm.texi.in (REAL_VALUE_TO_INT): Remove. (REAL_VALUE_FROM_INT): Remove. (TARGET_SUPPORTS_WIDE_INT): New. * doc/tm.texi: Regenerate. * dojump.c (prefer_and_bit_test): Use wide-int interfaces. * double-int.h: Include wide-int.h. (struct wi::int_traits): New. * dwarf2out.c (get_full_len): New. (dw_val_equal_p): Add case dw_val_class_wide_int. (size_of_loc_descr): Likewise. (output_loc_operands): Likewise. (insert_double): Remove. (insert_wide_int): New. (add_AT_wide): New. (print_die): Add case dw_val_class_wide_int. (attr_checksum): Likewise. (attr_checksum_ordered): Likewise. (same_dw_val_p): Likewise. (size_of_die): Likewise. (value_format): Likewise. (output_die): Likewise. (double_int_type_size_in_bits): Rename to offset_int_type_size_in_bits. Use wide-int. (clz_loc_descriptor): Use wide-int interfaces. (mem_loc_descriptor): Likewise. Handle CONST_WIDE_INT. (loc_descriptor): Use wide-int interfaces. Handle CONST_WIDE_INT. (round_up_to_align): Use wide-int interfaces. (field_byte_offset): Likewise. (insert_double): Rename to insert_wide_int. Use wide-int interfaces. (add_const_value_attribute): Handle CONST_WIDE_INT. Update CONST_DOUBLE handling. Use wide-int interfaces. (add_bound_info): Use tree_fits_uhwi_p. Use wide-int interfaces. (gen_enumeration_type_die): Use add_AT_wide. (hash_loc_operands): Add case dw_val_class_wide_int. (compare_loc_operands): Likewise. * dwarf2out.h: Include wide-int.h. (wide_int_ptr): New. (enum dw_val_class): Add dw_val_class_wide_int. (struct dw_val_struct): Add val_wide. * emit-rtl.c (const_wide_int_htab): New. (const_wide_int_htab_hash): New. (const_wide_int_htab_eq): New. (lookup_const_wide_int): New. (const_double_htab_hash): Use wide-int interfaces. (const_double_htab_eq): Likewise. (rtx_to_double_int): Conditionally compile for wide-int. (immed_double_int_const): Rename to immed_wide_int_const and update for wide-int. (immed_double_const): Conditionally compile for wide-int. (init_emit_once): Use wide-int interfaces. * explow.c (plus_constant): Likewise. * expmed.c (mask_rtx): Move further up file. Use wide-int interfaces. (lshift_value): Use wide-int interfaces. (expand_mult): Likewise. (choose_multiplier): Likewise. (expand_smod_pow2): Likewise. (make_tree): Likewise. * expr.c (convert_modes): Consolidate handling of constants. Use wide-int interfaces. (emit_group_load_1): Add note. (store_expr): Update comment. (get_inner_reference): Use wide-int interfaces. (expand_constructor): Update comment. (expand_expr_real_2): Use wide-int interfaces. (expand_expr_real_1): Likewise. (reduce_to_bit_field_precision): Likewise. (const_vector_from_tree): Likewise. * final.c: Include wide-int-print.h. (output_addr_const): Handle CONST_WIDE_INT. Use CONST_DOUBLE_AS_INT_P. * fixed-value.c: Include wide-int.h. (fixed_from_string): Use wide-int interfaces. (fixed_to_decimal): Likewise. (fixed_convert_from_real): Likewise. (real_convert_from_fixed): Likewise. * fold-const.h (mem_ref_offset): Return an offset_int. (div_if_zero_remainder): Remove code parameter. * fold-const.c (div_if_zero_remainder): Remove code parameter. Use wide-int interfaces. (may_negate_without_overflow_p): Use wide-int interfaces. (negate_expr_p): Likewise. (fold_negate_expr): Likewise. (int_const_binop_1): Likewise. (const_binop): Likewise. (fold_convert_const_int_from_int): Likewise. (fold_convert_const_int_from_real): Likewise. (fold_convert_const_int_from_fixed): Likewise. (fold_convert_const_fixed_from_int): Likewise. (all_ones_mask_p): Take an unsigned size. Use wide-int interfaces. (sign_bit_p): Use wide-int interfaces. (make_range_step): Likewise. (build_range_check): Likewise. Pass an integer of the correct type instead of using integer_one_node. (range_predecessor): Pass an integer of the correct type instead of using integer_one_node. (range_successor): Likewise. (merge_ranges): Likewise. (unextend): Use wide-int interfaces. (extract_muldiv_1): Likewise. (fold_div_compare): Likewise. (fold_single_bit_test): Likewise. (fold_sign_changed_comparison): Likewise. (try_move_mult_to_index): Update calls to div_if_zero_remainder. (fold_plusminus_mult_expr): Use wide-int interfaces. (native_encode_int): Likewise. (native_interpret_int): Likewise. (fold_unary_loc): Likewise. (pointer_may_wrap_p): Likewise. (size_low_cst): Likewise. (mask_with_tz): Likewise. (fold_binary_loc): Likewise. (fold_ternary_loc): Likewise. (multiple_of_p): Likewise. (tree_call_nonnegative_warnv_p): Update calls to tree_int_cst_min_precision and real_from_integer. (fold_negate_const): Use wide-int interfaces. (fold_abs_const): Likewise. (fold_relational_const): Use tree_int_cst_lt. (round_up_loc): Use wide-int interfaces. * genemit.c (gen_exp): Add CONST_WIDE_INT case. * gengenrtl.c (excluded_rtx): Add CONST_WIDE_INT case. * gengtype.c: Remove include of double-int.h. (do_typedef): Use wide-int interfaces. (open_base_files): Add wide-int.h. (main): Add offset_int and widest_int typedefs. * gengtype-lex.l: Handle "^". (CXX_KEYWORD): Add "static". * gengtype-parse.c (require3): New. (require_template_declaration): Handle constant template arguments and nested templates. * gengtype-state.c: Don't include "double-int.h". * genpreds.c (write_one_predicate_function): Update comment. (write_tm_constrs_h): Add check for hval and lval use in CONST_WIDE_INT. * genrecog.c (validate_pattern): Add CONST_WIDE_INT case. (add_to_sequence): Likewise. * gensupport.c (struct std_pred_table): Add const_scalar_int_operand and const_double_operand. * gimple.c (preprocess_case_label_vec_for_gimple): Use wide-int interfaces. * gimple-fold.c (get_base_constructor): Likewise. (fold_array_ctor_reference): Likewise. (fold_nonarray_ctor_reference): Likewise. (fold_const_aggregate_ref_1): Likewise. (gimple_val_nonnegative_real_p): Likewise. (gimple_fold_indirect_ref): Likewise. * gimple-pretty-print.c (dump_ssaname_info): Likewise. * gimple-ssa-strength-reduction.c: Include wide-int-print.h. (struct slsr_cand_d): Change index to be widest_int. (struct incr_info_d): Change incr to be widest_int. (alloc_cand_and_find_basis): Use wide-int interfaces. (slsr_process_phi): Likewise. (backtrace_base_for_ref): Likewise. Return a widest_int. (restructure_reference): Take a widest_int instead of a double_int. (slsr_process_ref): Use wide-int interfaces. (create_mul_ssa_cand): Likewise. (create_mul_imm_cand): Likewise. (create_add_ssa_cand): Likewise. (create_add_imm_cand): Take a widest_int instead of a double_int. (slsr_process_add): Use wide-int interfaces. (slsr_process_cast): Likewise. (slsr_process_copy): Likewise. (dump_candidate): Likewise. (dump_incr_vec): Likewise. (replace_ref): Likewise. (cand_increment): Likewise. Return a widest_int. (cand_abs_increment): Likewise. (replace_mult_candidate): Take a widest_int instead of a double_int. (replace_unconditional_candidate): Use wide-int interfaces. (incr_vec_index): Take a widest_int instead of a double_int. (create_add_on_incoming_edge): Likewise. (create_phi_basis): Use wide-int interfaces. (replace_conditional_candidate): Likewise. (record_increment): Take a widest_int instead of a double_int. (record_phi_increments): Use wide-int interfaces. (phi_incr_cost): Take a widest_int instead of a double_int. (lowest_cost_path): Likewise. (total_savings): Likewise. (analyze_increments): Use wide-int interfaces. (ncd_with_phi): Take a widest_int instead of a double_int. (ncd_of_cand_and_phis): Likewise. (nearest_common_dominator_for_cands): Likewise. (insert_initializers): Use wide-int interfaces. (all_phi_incrs_profitable): Likewise. (replace_one_candidate): Likewise. (replace_profitable_candidates): Likewise. * godump.c: Include wide-int-print.h. (go_output_typedef): Use wide-int interfaces. * graphite-clast-to-gimple.c (gmp_cst_to_tree): Likewise. * graphite-sese-to-poly.c (tree_int_to_gmp): Likewise. (build_loop_iteration_domains): Likewise. * hooks.h: Include wide-int.h rather than double-int.h. (hook_bool_dint_dint_uint_bool_true): Delete. (hook_bool_wint_wint_uint_bool_true): Declare. * hooks.c (hook_bool_dint_dint_uint_bool_true): Removed. (hook_bool_wint_wint_uint_bool_true): New. * internal-fn.c (ubsan_expand_si_overflow_addsub_check): Use wide-int interfaces. (ubsan_expand_si_overflow_mul_check): Likewise. * ipa-devirt.c (get_polymorphic_call_info): Likewise. * ipa-prop.c (compute_complex_assign_jump_func): Likewise. (get_ancestor_addr_info): Likewise. (ipa_modify_call_arguments): Likewise. * loop-doloop.c (doloop_modify): Likewise. (doloop_optimize): Likewise. * loop-iv.c (iv_number_of_iterations): Likewise. * loop-unroll.c (decide_unroll_constant_iterations): Likewise. (unroll_loop_constant_iterations): Likewise. (decide_unroll_runtime_iterations): Likewise. (unroll_loop_runtime_iterations): Likewise. (decide_peel_simple): Likewise. (decide_unroll_stupid): Likewise. * lto-streamer-in.c (streamer_read_wi): Add. (input_cfg): Use wide-int interfaces. (lto_input_tree_1): Likewise. * lto-streamer-out.c (streamer_write_wi): Add. (hash_tree): Use wide-int interfaces. (output_cfg): Likewise. * Makefile.in (OBJS): Add wide-int.o and wide-int-print.o. (GTFILES): Add wide-int.h and signop.h. (TAGS): Look for .cc files too. * omp-low.c (scan_omp_1_op): Use wide-int interfaces. * optabs.c (expand_subword_shift): Likewise. (expand_doubleword_shift): Likewise. (expand_absneg_bit): Likewise. (expand_copysign_absneg): Likewise. (expand_copysign_bit): Likewise. * postreload.c (reload_cse_simplify_set): Likewise. * predict.c (predict_iv_comparison): Likewise. * pretty-print.h: Include wide-int-print.h. (pp_wide_int) New. * print-rtl.c (print_rtx): Add CONST_WIDE_INT case. * print-tree.c: Include wide-int-print.h. (print_node_brief): Use wide-int interfaces. (print_node): Likewise. * read-rtl.c (validate_const_wide_int): New. (read_rtx_code): Add CONST_WIDE_INT case. * real.c: Include wide-int.h. (real_to_integer2): Delete. (real_to_integer): New function, returning a wide_int. (real_from_integer): Take a wide_int rather than two HOST_WIDE_INTs. (ten_to_ptwo): Update call to real_from_integer. (real_digit): Likewise. * real.h: Include signop.h, wide-int.h and insn-modes.h. (real_to_integer2, REAL_VALUE_FROM_INT, REAL_VALUE_FROM_UNSIGNED_INT) (REAL_VALUE_TO_INT): Delete. (real_to_integer): Declare a wide-int form. (real_from_integer): Take a wide_int rather than two HOST_WIDE_INTs. * recog.c (const_int_operand): Improve comment. (const_scalar_int_operand): New. (const_double_operand): Add a separate definition for CONST_WIDE_INT. * rtlanal.c (commutative_operand_precedence): Handle CONST_WIDE_INT. (split_double): Likewise. * rtl.c (DEF_RTL_EXPR): Handle CONST_WIDE_INT. (rtx_size): Likewise. (rtx_alloc_stat_v): New. (rtx_alloc_stat): Now calls rtx_alloc_stat_v. (cwi_output_hex): New. (iterative_hash_rtx): Handle CONST_WIDE_INT. (cwi_check_failed_bounds): New. * rtl.def (CONST_WIDE_INT): New. * rtl.h: Include and wide-int.h. (struct hwivec_def): New. (CWI_GET_NUM_ELEM): New. (CWI_PUT_NUM_ELEM): New. (struct rtx_def): Add num_elem and hwiv. (CASE_CONST_SCALAR_INT): Modify for TARGET_SUPPORTS_WIDE_INT. (CASE_CONST_UNIQUE): Likewise. (CASE_CONST_ANY): Likewise. (CONST_SCALAR_INT_P): Likewise. (CONST_WIDE_INT_P): New. (CWI_ELT): New. (HWIVEC_CHECK): New. (cwi_check_failed_bounds): New. (CWI_ELT): New. (HWIVEC_CHECK): New. (CONST_WIDE_INT_VEC) New. (CONST_WIDE_INT_NUNITS) New. (CONST_WIDE_INT_ELT) New. (rtx_mode_t): New type. (wi::int_traits ): New. (wi::shwi): New. (wi::min_value): New. (wi::max_value): New. (rtx_alloc_v) New. (const_wide_int_alloc): New. (immed_wide_int_const): New. * sched-vis.c (print_value): Handle CONST_WIDE_INT. * sel-sched-ir.c (lhs_and_rhs_separable_p): Update comment. * signop.h: New file. * simplify-rtx.c (mode_signbit_p): Handle CONST_WIDE_INT. (simplify_const_unary_operation): Use wide-int interfaces. (simplify_binary_operation_1): Likewise. (simplify_const_binary_operation): Likewise. (simplify_const_relational_operation): Likewise. (simplify_immed_subreg): Likewise. * stmt.c (expand_case): Likewise. * stor-layout.h (set_min_and_max_values_for_integral_type): Take a signop rather than a bool. * stor-layout.c (layout_type): Use wide-int interfaces. (initialize_sizetypes): Update calls to set_min_and_max_values_for_integral_type. (set_min_and_max_values_for_integral_type): Take a signop rather than a bool. Use wide-int interfaces. (fixup_signed_type): Update accordingly. Remove HOST_BITS_PER_DOUBLE_INT limit. (fixup_unsigned_type): Likewise. * system.h (STATIC_CONSTANT_P): New. (STATIC_ASSERT): New. * target.def (can_use_doloop_p): Take widest_ints rather than double_ints. * target.h: Include wide-int.h rather than double-int.h. * targhooks.h (can_use_doloop_if_innermost): Take widest_ints rather than double_ints. * targhooks.c (default_cxx_get_cookie_size): Use tree_int_cst_lt rather than INT_CST_LT_UNSIGNED. (can_use_doloop_if_innermost): Take widest_ints rather than double_ints. * tree-affine.c: Include wide-int-print.h. (double_int_ext_for_comb): Delete. (wide_int_ext_for_comb): New. (aff_combination_zero): Use wide-int interfaces. (aff_combination_const): Take a widest_int instead of a double_int. (aff_combination_elt): Use wide-int interfaces. (aff_combination_scale): Take a widest_int instead of a double_int. (aff_combination_add_elt): Likewise. (aff_combination_add_cst): Likewise. (aff_combination_add): Use wide-int interfaces. (aff_combination_convert): Likewise. (tree_to_aff_combination): Likewise. (add_elt_to_tree): Take a widest_int instead of a double_int. (aff_combination_to_tree): Use wide-int interfaces. (aff_combination_remove_elt): Likewise. (aff_combination_add_product): Take a widest_int instead of a double_int. (aff_combination_mult): Use wide-int interfaces. (aff_combination_expand): Likewise. (double_int_constant_multiple_p): Delete. (wide_int_constant_multiple_p): New. (aff_combination_constant_multiple_p): Take a widest_int pointer instead of a double_int pointer. (print_aff): Use wide-int interfaces. (get_inner_reference_aff): Take a widest_int pointer instead of a double_int pointer. (aff_comb_cannot_overlap_p): Take widest_ints instead of double_ints. * tree-affine.h: Include wide-int.h. (struct aff_comb_elt): Change type of coef to widest_int. (struct affine_tree_combination): Change type of offset to widest_int. (double_int_ext_for_comb): Delete. (wide_int_ext_for_comb): New. (aff_combination_const): Use widest_int instead of double_int. (aff_combination_scale): Likewise. (aff_combination_add_elt): Likewise. (aff_combination_constant_multiple_p): Likewise. (get_inner_reference_aff): Likewise. (aff_comb_cannot_overlap_p): Likewise. (aff_combination_zero_p): Use wide-int interfaces. * tree.c: Include tree.h. (init_ttree): Use make_int_cst. (tree_code_size): Removed code for INTEGER_CST case. (tree_size): Add INTEGER_CST case. (make_node_stat): Update comment. (get_int_cst_ext_nunits, build_new_int_cst, build_int_cstu): New. (build_int_cst_type): Use wide-int interfaces. (double_int_to_tree): Likewise. (double_int_fits_to_tree_p): Delete. (force_fit_type_double): Delete. (force_fit_type): New. (int_cst_hash_hash): Use wide-int interfaces. (int_cst_hash_eq): Likewise. (build_int_cst_wide): Delete. (wide_int_to_tree): New. (cache_integer_cst): Use wide-int interfaces. (build_low_bits_mask): Likewise. (cst_and_fits_in_hwi): Likewise. (real_value_from_int_cst): Likewise. (make_int_cst_stat): New. (integer_zerop): Use wide_int interfaces. (integer_onep): Likewise. (integer_all_onesp): Likewise. (integer_pow2p): Likewise. (integer_nonzerop): Likewise. (tree_log2): Likewise. (tree_floor_log2): Likewise. (tree_ctz): Likewise. (int_size_in_bytes): Likewise. (mem_ref_offset): Return an offset_int rather than a double_int. (build_type_attribute_qual_variant): Use wide_int interfaces. (type_hash_eq): Likewise (tree_int_cst_equal): Likewise. (tree_int_cst_lt): Delete. (tree_int_cst_compare): Likewise. (tree_fits_shwi_p): Use wide_int interfaces. (tree_fits_uhwi_p): Likewise. (tree_int_cst_sign_bit): Likewise. (tree_int_cst_sgn): Likewise. (tree_int_cst_min_precision): Take a signop rather than a bool. (simple_cst_equal): Use wide_int interfaces. (compare_tree_int): Likewise. (iterative_hash_expr): Likewise. (int_fits_type_p): Likewise. Use tree_int_cst_lt rather than INT_CST_LT. (get_type_static_bounds): Use wide_int interfaces. (tree_int_cst_elt_check_failed): New. (build_common_tree_nodes): Reordered to set prec before filling in value. (int_cst_value): Check cst_and_fits_in_hwi. (widest_int_cst_value): Use wide_int interfaces. (upper_bound_in_type): Likewise. (lower_bound_in_type): Likewise. (num_ending_zeros): Likewise. (drop_tree_overflow): Likewise. * tree-call-cdce.c (check_pow): Update call to real_from_integer. (gen_conditions_for_pow_cst_base): Likewise. * tree-cfg.c: Include wide-int.h and wide-int-print.h. (group_case_labels_stmt): Use wide-int interfaces. (verify_gimple_assign_binary): Likewise. (print_loop): Likewise. * tree-chrec.c (tree_fold_binomial): Likewise. * tree-core.h (struct tree_base): Add int_length. (struct tree_int_cst): Change rep of value. * tree-data-ref.c (dr_analyze_innermost): Use wide-int interfaces. (dr_may_alias_p): Likewise. (max_stmt_executions_tree): Likewise. * tree.def (INTEGER_CST): Update comment. * tree-dfa.c (get_ref_base_and_extent): Use wide-int interfaces. * tree-dfa.h (get_addr_base_and_unit_offset_1): Likewise. * tree-dump.c: Include wide-int.h and wide-int-print.h. (dequeue_and_dump): Use wide-int interfaces. * tree.h: Include wide-int.h. (NULL_TREE): Moved to earlier loc in file. (TREE_INT_CST_ELT_CHECK): New. (tree_int_cst_elt_check_failed): New. (TYPE_SIGN): New. (TREE_INT_CST): Delete. (TREE_INT_CST_LOW): Use wide-int interfaces. (TREE_INT_CST_HIGH): Delete. (TREE_INT_CST_NUNITS): New. (TREE_INT_CST_EXT_NUNITS): Likewise. (TREE_INT_CST_OFFSET_NUNITS): Likewise. (TREE_INT_CST_ELT): Likewise. (INT_CST_LT): Delete. (tree_int_cst_elt_check): New (two forms). (type_code_size): Update comment. (make_int_cst_stat, make_int_cst): New. (tree_to_double_int): Delete. (double_int_fits_to_tree_p): Delete. (force_fit_type_double): Delete. (build_int_cstu): Replace with out-of-line function. (build_int_cst_wide): Delete. (tree_int_cst_lt): Define inline. (tree_int_cst_le): New. (tree_int_cst_compare): Define inline. (tree_int_cst_min_precision): Take a signop rather than a bool. (wi::int_traits ): New. (wi::int_traits ): New. (wi::extended_tree): New. (wi::int_traits ): New. (wi::to_widest): New. (wi::to_offset): New. (wi::fits_to_tree_p): New. (wi::min_value): New. (wi::max_value): New. * tree-inline.c (remap_gimple_op_r): Use wide-int interfaces. (copy_tree_body_r): Likewise. * tree-object-size.c (compute_object_offset): Likewise. (addr_object_size): Likewise. * tree-predcom.c: Include wide-int-print.h. (struct dref_d): Change type of offset to widest_int. (dump_dref): Call wide-int printer. (aff_combination_dr_offset): Use wide-int interfaces. (determine_offset): Take a widest_int pointer rather than a double_int pointer. (split_data_refs_to_components): Use wide-int interfaces. (suitable_component_p): Likewise. (order_drefs): Likewise. (add_ref_to_chain): Likewise. (valid_initializer_p): Likewise. (determine_roots_comp): Likewise. * tree-pretty-print.c: Include wide-int-print.h. (dump_generic_node): Use wide-int interfaces. * tree-sra.c (sra_ipa_modify_expr): Likewise. * tree-ssa-address.c (addr_for_mem_ref): Likewise. (move_fixed_address_to_symbol): Likewise. (move_hint_to_base): Likewise. (move_pointer_to_base): Likewise. (move_variant_to_index): Likewise. (most_expensive_mult_to_index): Likewise. (addr_to_parts): Likewise. (copy_ref_info): Likewise. * tree-ssa-alias.c (indirect_ref_may_alias_decl_p): Likewise. (indirect_refs_may_alias_p): Likewise. (stmt_kills_ref_p_1): Likewise. * tree-ssa.c (non_rewritable_mem_ref_base): Likewise. * tree-ssa-ccp.c: Update comment at top of file. Include wide-int-print.h. (struct prop_value_d): Change type of mask to widest_int. (extend_mask): New function. (dump_lattice_value): Use wide-int interfaces. (get_default_value): Likewise. (set_constant_value): Likewise. (set_value_varying): Likewise. (valid_lattice_transition): Likewise. (set_lattice_value): Likewise. (value_to_double_int): Delete. (value_to_wide_int): New. (get_value_from_alignment): Use wide-int interfaces. (get_value_for_expr): Likewise. (do_dbg_cnt): Likewise. (ccp_finalize): Likewise. (ccp_lattice_meet): Likewise. (bit_value_unop_1): Use widest_ints rather than double_ints. (bit_value_binop_1): Likewise. (bit_value_unop): Use wide-int interfaces. (bit_value_binop): Likewise. (bit_value_assume_aligned): Likewise. (evaluate_stmt): Likewise. (ccp_fold_stmt): Likewise. (visit_cond_stmt): Likewise. (ccp_visit_stmt): Likewise. * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Likewise. (constant_pointer_difference): Likewise. (associate_pointerplus): Likewise. (combine_conversions): Likewise. * tree-ssa-loop.h: Include wide-int.h. (struct tree_niter_desc): Change type of max to widest_int. * tree-ssa-loop-im.c (mem_refs_may_alias_p): Use wide-int interfaces. * tree-ssa-loop-ivcanon.c (remove_exits_and_undefined_stmts): Likewise. (remove_redundant_iv_tests): Likewise. (canonicalize_loop_induction_variables): Likewise. * tree-ssa-loop-ivopts.c (alloc_iv): Likewise. (constant_multiple_of): Take a widest_int pointer instead of a double_int pointer. (get_computation_aff): Use wide-int interfaces. (ptr_difference_cost): Likewise. (difference_cost): Likewise. (get_loop_invariant_expr_id): Likewise. (get_computation_cost_at): Likewise. (iv_elimination_compare_lt): Likewise. (may_eliminate_iv): Likewise. * tree-ssa-loop-niter.h (estimated_loop_iterations): Use widest_int instead of double_int. (max_loop_iterations): Likewise. (max_stmt_executions): Likewise. (estimated_stmt_executions): Likewise. * tree-ssa-loop-niter.c: Include wide-int-print.h. (split_to_var_and_offset): Use wide-int interfaces. (determine_value_range): Likewise. (bound_difference_of_offsetted_base): Likewise. (bounds_add): Take a widest_int instead of a double_int. (number_of_iterations_ne_max): Use wide-int interfaces. (number_of_iterations_ne): Likewise. (number_of_iterations_lt_to_ne): Likewise. (assert_loop_rolls_lt): Likewise. (number_of_iterations_lt): Likewise. (number_of_iterations_le): Likewise. (number_of_iterations_cond): Likewise. (number_of_iterations_exit): Likewise. (finite_loop_p): Likewise. (derive_constant_upper_bound_assign): Likewise. (derive_constant_upper_bound): Return a widest_int. (derive_constant_upper_bound_ops): Likewise. (do_warn_aggressive_loop_optimizations): Use wide-int interfaces. (record_estimate): Take a widest_int rather than a double_int. (record_nonwrapping_iv): Use wide-int interfaces. (double_int_cmp): Delete. (wide_int_cmp): New. (bound_index): Take a widest_int rather than a double_int. (discover_iteration_bound_by_body_walk): Use wide-int interfaces. (maybe_lower_iteration_bound): Likewise. (estimate_numbers_of_iterations_loop): Likewise. (estimated_loop_iterations): Take a widest_int pointer than than a double_int pointer. (estimated_loop_iterations_int): Use wide-int interfaces. (max_loop_iterations): Take a widest_int pointer than than a double_int pointer. (max_loop_iterations_int): Use wide-int interfaces. (max_stmt_executions): Take a widest_int pointer than than a double_int pointer. (estimated_stmt_executions): Likewise. (n_of_executions_at_most): Use wide-int interfaces. (scev_probably_wraps_p): Likewise. * tree-ssa-math-opts.c (gimple_expand_builtin_pow): Update calls to real_to_integer. * tree-scalar-evolution.c (simplify_peeled_chrec): Use wide-int interfaces. * tree-ssanames.c (set_range_info): Use wide_int_refs rather than double_ints. Adjust for trailing_wide_ints <3> representation. (set_nonzero_bits): Likewise. (get_range_info): Return wide_ints rather than double_ints. Adjust for trailing_wide_ints <3> representation. (get_nonzero_bits): Likewise. (duplicate_ssa_name_range_info): Adjust for trailing_wide_ints <3> representation. * tree-ssanames.h (struct range_info_def): Replace min, max and nonzero_bits with a trailing_wide_ints <3>. (set_range_info): Use wide_int_refs rather than double_ints. (set_nonzero_bits): Likewise. (get_range_info): Return wide_ints rather than double_ints. (get_nonzero_bits): Likewise. * tree-ssa-phiopt.c (jump_function_from_stmt): Use wide-int interfaces. * tree-ssa-pre.c (phi_translate_1): Likewise. * tree-ssa-reassoc.c (decrement_power): Use calls to real_from_integer. (acceptable_pow_call): Likewise. * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Use wide-int interfaces. (vn_reference_fold_indirect): Likewise. (vn_reference_maybe_forwprop_address): Likewise. (valueize_refs_1): Likewise. * tree-ssa-structalias.c (get_constraint_for_ptr_offset): Likewise. * tree-ssa-uninit.c (is_value_included_in): Use wide-int interfaces, tree_int_cst_lt and tree_int_cst_le. * tree-streamer-in.c (unpack_ts_base_value_fields): Use wide-int interfaces. (streamer_alloc_tree): Likewise. * tree-streamer-out.c (pack_ts_int_cst_value_fields): Likewise. (streamer_write_tree_header): Likewise. (streamer_write_integer_cst): Likewise. * tree-switch-conversion.c (emit_case_bit_tests): Likewise. (build_constructors): Likewise. (array_value_type): Likewise. * tree-vect-data-refs.c (vect_prune_runtime_alias_test_list): Likewise. (vect_check_gather): Likewise. * tree-vect-generic.c (build_replicated_const): Likewise. (expand_vector_divmod): Likewise. * tree-vect-loop.c (vect_transform_loop): Likewise. * tree-vect-loop-manip.c (vect_do_peeling_for_loop_bound): Likewise. (vect_do_peeling_for_alignment): Likewise. * tree-vect-patterns.c (vect_recog_divmod_pattern): Likewise. * tree-vrp.c: Include wide-int.h. (operand_less_p): Use wide-int interfaces and tree_int_cst_lt. (extract_range_from_assert): Use wide-int interfaces. (vrp_int_const_binop): Likewise. (zero_nonzero_bits_from_vr): Take wide_int pointers rather than double_int pointers. (ranges_from_anti_range): Use wide-int interfaces. (quad_int_cmp): Delete. (quad_int_pair_sort): Likewise. (extract_range_from_binary_expr_1): Use wide-int interfaces. (extract_range_from_unary_expr_1): Likewise. (adjust_range_with_scev): Likewise. (masked_increment): Take and return wide_ints rather than double_ints. (register_edge_assert_for_2): Use wide-int interfaces. (check_array_ref): Likewise. (search_for_addr_array): Likewise. (maybe_set_nonzero_bits): Likewise. (union_ranges): Pass an integer of the correct type instead of using integer_one_node. (intersect_ranges): Likewise. (simplify_truth_ops_using_ranges): Likewise. (simplify_bit_ops_using_ranges): Use wide-int interfaces. (range_fits_type_p): Likewise. (simplify_cond_using_ranges): Likewise. Take a signop rather than a bool. (simplify_conversion_using_ranges): Use wide-int interfaces. (simplify_float_conversion_using_ranges): Likewise. (vrp_finalize): Likewise. * value-prof.c (gimple_divmod_fixed_value_transform): Likewise. (gimple_stringops_transform): Likewise. * varasm.c (decode_addr_const): Likewise. (const_hash_1): Likewise. (const_rtx_hash_1): Likewise (output_constant): Likewise. (array_size_for_constructor): Likewise. (output_constructor_regular_field): Likewise. (output_constructor_bitfield): Likewise. * var-tracking.c (loc_cmp): Handle CONST_WIDE_INT. * mkconfig.sh: Include machmode.h to pick up BITS_PER_UNIT for GENERATOR_FILEs. * gencheck.c: Define BITS_PER_UNIT. * wide-int.cc: New. * wide-int.h: New. * wide-int-print.cc: New. * wide-int-print.h: New. ada: * gcc-interface/cuintp.c (UI_From_gnu): Use wide-int interfaces. * gcc-interface/decl.c (gnat_to_gnu_entity): Use TYPE_SIGN. (annotate_value): Use wide-int interfaces. * gcc-interface/utils.c (get_nonnull_operand): Use tree_fits_uhwi_p. c: * c-decl.c (check_bitfield_type_and_width): Use TYPE_SIGN. (finish_enum): Use wide-int interfaces. * c-parser.c (c_parser_cilk_clause_vectorlength): Likewise. * c-typeck.c (build_c_cast): Likewise. (set_nonincremental_init_from_string): Likewise. (c_tree_equal): Likewise. c-family: * c-ada-spec.c: Include wide-int.h. (ADA_HOST_WIDE_INT_PRINT_DOUBLE_HEX): Remove. (dump_generic_ada_node): Use wide-int interfaces. * c-common.c: Include wide-int-print.h. (shorten_compare): Use wide-int interfaces and tree_int_cst_lt. (pointer_int_sum): Use wide-int interfaces. (c_common_nodes_and_builtins): Use make_int_cst. (match_case_to_enum_1): Use tree_fits_uhwi_p and tree_fits_shwi_p. (handle_alloc_size_attribute): Use wide-int interfaces. (get_nonnull_operand): Likewise. * c-format.c (get_constant): Use tree_fits_uhwi_p. * c-lex.c: Include wide-int.h. (narrowest_unsigned_type): Take a widest_int rather than two HOST_WIDE_INTs. (narrowest_signed_type): Likewise. (interpret_integer): Update accordingly. Use wide-int interfaces. (lex_charconst): Use wide-int interfaces. * c-pretty-print.c: Include wide-int.h. (pp_c_integer_constant): Use wide-int interfaces. * cilk.c (declare_one_free_variable): Use tree_int_cst_lt instead of INT_CST_LT_UNSIGNED. cp: * call.c: Include wide-int.h. (type_passed_as): Use tree_int_cst_lt instead of INT_CST_LT_UNSIGNED. (convert_for_arg_passing): Likewise. * class.c: Include wide-int.h. (walk_subobject_offsets): Use tree_int_cst_lt instead of INT_CST_LT. (end_of_class): Use tree_int_cst_lt instead of INT_CST_LT_UNSIGNED. (include_empty_classes): Likewise (layout_class_type): Use tree_int_cst_lt instead of INT_CST_LT. * cvt.c: Include wide-int.h. (ignore_overflows): Use wide_int_to_tree. * decl.c: Include wide-int.h. (check_array_designated_initializer): Use wide-int interfaces. (compute_array_index_type): Use tree_int_cst_lt instead of INT_CST_LT. (finish_enum_value_list): Use signop. (build_enumerator): Use wide-int interfaces. * init.c: Include wide-int.h. (build_new_1): Use wide-int interfaces. * mangle.c: Include wide-int.h. (write_integer_cst): Use wide-int interfaces. (write_array_type): Likewise. * tree.c: Include wide-int.h. (cp_tree_equal): Use tree_int_cst_equal. * typeck2.c: Include wide-int.h. (process_init_constructor_array): Use wide-int interfaces. fortran: * target-memory.c: Include wide-int.h. (gfc_interpret_logical): Use wide-int interfaces. * trans-array.c: Include wide-int.h. (gfc_conv_array_initializer): Use wide-int interfaces. * trans-const.c: Include wide-int.h. (gfc_conv_string_init): Use wide-int interfaces. (gfc_conv_mpz_to_tree): Likewise. (gfc_conv_tree_to_mpz): Likewise. * trans-decl.c (gfc_can_put_var_on_stack): Use tree_fits_uhwi_p. * trans-expr.c: Include wide-int.h. (gfc_conv_cst_int_power): Use wide-int interfaces. (gfc_string_to_single_character): Likewise. (gfc_optimize_len_trim): Likewise. * trans-intrinsic.c: Include wide-int.h. (trans_this_image): Use wide-int interfaces. (gfc_conv_intrinsic_bound): Likewise. (conv_intrinsic_cobound): Likewise. * trans-types.c (gfc_init_types): Likewise. (gfc_get_array_type_bounds): Pass an integer of the correct type instead of using integer_one_node. go: * go-gcc.cc (Gcc_backend::type_size): Use tree_fits_uhwi_p. java: * boehm.c: Include wide-int.h. (mark_reference_fields): Use a wide_int mask. (get_boehm_type_descriptor): Use wide-int interfaces. * expr.c: Include wide-int.h. (build_newarray): Remove bogus "== INTEGER_CST". (expand_java_pushc): Use real_from_integer. (build_field_ref): Use tree_int_cst_lt instead of INT_CST_LT_UNSIGNED. * jcf-parse.c: Include wide-int.h. (get_constant): Use wide-int interfaces. lto: * lto.c (compare_tree_sccs_1): Use wide-int interfaces. * lto-lang.c (get_nonnull_operand): Likewise. objc: * objc-act.c: Include wide-int.h. (objc_decl_method_attributes): Use wide-int interfaces. testsuite: * gcc.dg/tree-ssa/pr45427.c: Update to look for 0x0 instead of 0.