GCC Middle and Back End API Reference
|
#include <wide-int.h>
Public Member Functions | |
wide_int_storage () | |
template<typename T > | |
wide_int_storage (const T &) | |
wide_int_storage (const wide_int_storage &) | |
~wide_int_storage () | |
unsigned int | get_precision () const |
const HOST_WIDE_INT * | get_val () const |
unsigned int | get_len () const |
HOST_WIDE_INT * | write_val (unsigned int) |
void | set_len (unsigned int, bool=false) |
wide_int_storage & | operator= (const wide_int_storage &) |
template<typename T > | |
wide_int_storage & | operator= (const T &) |
Static Public Member Functions | |
static wide_int | from (const wide_int_ref &, unsigned int, signop) |
static wide_int | from_array (const HOST_WIDE_INT *, unsigned int, unsigned int, bool=true) |
static wide_int | create (unsigned int) |
Private Attributes | ||
union { | ||
HOST_WIDE_INT val [WIDE_INT_MAX_INL_ELTS] | ||
HOST_WIDE_INT * valp | ||
} | u | |
unsigned int | len | |
unsigned int | precision | |
The storage used by wide_int.
|
inline |
Initialize the storage from integer X, in its natural precision. Note that we do not allow integers with host-dependent precision to become wide_ints; wide_ints must always be logically independent of the host.
References CEIL, wi::CONST_PRECISION, wi::copy(), HOST_BITS_PER_WIDE_INT, wi::INL_CONST_PRECISION, precision, STATIC_ASSERT(), u, UNLIKELY, WIDE_INT_MAX_INL_PRECISION, and WIDE_INT_REF_FOR.
|
inline |
References CEIL, HOST_BITS_PER_WIDE_INT, len, precision, u, UNLIKELY, valp, and WIDE_INT_MAX_INL_PRECISION.
|
inline |
References precision, u, UNLIKELY, and WIDE_INT_MAX_INL_PRECISION.
|
inlinestatic |
Return an uninitialized wide_int with precision PRECISION.
References CEIL, HOST_BITS_PER_WIDE_INT, precision, u, UNLIKELY, valp, and WIDE_INT_MAX_INL_PRECISION.
Referenced by from(), from_array(), wi::from_buffer(), wi::from_mpz(), wi::int_traits< wide_int_storage >::get_binary_result(), wi::mask(), and wi::shifted_mask().
|
inlinestatic |
Treat X as having signedness SGN and convert it to a PRECISION-bit number.
References create(), wi::force_to_size(), precision, set_len(), and write_val().
Referenced by ccp_finalize(), tree_switch_conversion::switch_conversion::contains_linear_function_p(), convert_modes(), evaluate_stmt(), expand_doubleword_divmod(), fixed_to_decimal(), fold_binary_loc(), fold_const_call_ss(), fold_convert_const_int_from_int(), operator_cast::fold_pair(), fold_unary_loc(), get_size_range(), wi::insert(), ipa_compute_jump_functions_for_edge(), ipcp_store_vr_results(), is_widening_mult_rhs_p(), iv_can_overflow_p(), lower_omp_ordered_clauses(), maybe_optimize_mod_cmp(), wi::mod_inv(), omp_apply_tile(), output_constant(), range_of_var_in_loop(), real_convert_from_fixed(), real_from_integer(), real_to_integer(), reload_cse_simplify_set(), simplify_const_unary_operation(), simplify_rotate(), wi::to_wide(), tree_nonzero_bits(), update_known_bitmask(), value_range_from_overflowed_bounds(), value_range_with_overflow(), vect_determine_precisions_from_range(), operator_mult::wi_fold(), operator_widen_mult_signed::wi_fold(), operator_widen_mult_unsigned::wi_fold(), operator_widen_plus_signed::wi_fold(), operator_widen_plus_unsigned::wi_fold(), and wide_int_to_tree_1().
|
inlinestatic |
Create a wide_int from the explicit block encoding given by VAL and LEN. PRECISION is the precision of the integer. NEED_CANON_P is true if the encoding may have redundant trailing blocks.
References create(), wi::from_array(), len, precision, set_len(), val, and write_val().
Referenced by build_replicated_int_cst(), gimple_divmod_fixed_value_transform(), gimple_stringops_transform(), lto_input_tree_1(), make_tree(), output_addr_const(), real_to_integer(), and streamer_read_wide_int().
|
inline |
References len.
Referenced by build_new_int_cst(), pass_walloca::execute(), get_int_cst_ext_nunits(), go_output_typedef(), streamer_write_wide_int(), and write_wide_int().
|
inline |
References precision.
Referenced by build_new_int_cst(), compute_distributive_range(), get_int_cst_ext_nunits(), irange_bitmask::get_precision(), get_size_range(), handle_array_ref(), wi::insert(), irange_bitmask::intersect(), ipa_odr_read_section(), omp_apply_tile(), wi::round_down_for_mask(), wi::round_up_for_mask(), irange_bitmask::set_nonzero_bits(), streamer_write_wide_int(), irange_bitmask::verify_mask(), irange::verify_range(), vn_walk_cb_data::vn_walk_cb_data(), operator_div::wi_op_overflows(), operator_mult::wi_op_overflows(), wi_optimize_and_or(), and wi_set_zero_nonzero_bits().
|
inline |
References precision, u, UNLIKELY, and WIDE_INT_MAX_INL_PRECISION.
|
inline |
|
inline |
References CEIL, HOST_BITS_PER_WIDE_INT, len, precision, u, UNLIKELY, valp, and WIDE_INT_MAX_INL_PRECISION.
References HOST_BITS_PER_WIDE_INT, len, precision, sext_hwi(), and write_val().
Referenced by from(), from_array(), wi::from_buffer(), wi::from_mpz(), wi::mask(), and wi::shifted_mask().
|
inline |
References precision, u, UNLIKELY, and WIDE_INT_MAX_INL_PRECISION.
Referenced by from(), from_array(), wi::from_buffer(), wi::from_mpz(), wi::mask(), set_len(), and wi::shifted_mask().
|
private |
Referenced by from_array(), get_len(), operator=(), set_len(), and wide_int_storage().
|
private |
Referenced by create(), from(), from_array(), get_precision(), get_val(), operator=(), operator=(), set_len(), wide_int_storage(), wide_int_storage(), write_val(), and ~wide_int_storage().
union { ... } wide_int_storage::u |
Referenced by create(), get_val(), operator=(), operator=(), wide_int_storage(), wide_int_storage(), write_val(), and ~wide_int_storage().
HOST_WIDE_INT wide_int_storage::val[WIDE_INT_MAX_INL_ELTS] |
Referenced by from_array().
HOST_WIDE_INT* wide_int_storage::valp |
Referenced by create(), operator=(), and wide_int_storage().