diff options
author | Richard Sandiford <richard.sandiford@linaro.org> | 2017-12-20 12:52:22 +0000 |
---|---|---|
committer | Richard Sandiford <rsandifo@gcc.gnu.org> | 2017-12-20 12:52:22 +0000 |
commit | 84bc717b510cc56f64120dd58c64e1f6ebfad5e3 (patch) | |
tree | 453653202c11c4dbbfe83c406937159f5b19a558 /gcc/inchash.h | |
parent | 37b2b8f95783b449aca30d32f4c97a4db3bd395e (diff) | |
download | gcc-84bc717b510cc56f64120dd58c64e1f6ebfad5e3.zip gcc-84bc717b510cc56f64120dd58c64e1f6ebfad5e3.tar.gz gcc-84bc717b510cc56f64120dd58c64e1f6ebfad5e3.tar.bz2 |
poly_int: REG_OFFSET
This patch changes the type of the reg_attrs offset field
from HOST_WIDE_INT to poly_int64 and updates uses accordingly.
This includes changing reg_attr_hasher::hash to use inchash.
(Doing this has no effect on code generation since the only
use of the hasher is to avoid creating duplicate objects.)
2017-12-20 Richard Sandiford <richard.sandiford@linaro.org>
Alan Hayward <alan.hayward@arm.com>
David Sherwood <david.sherwood@arm.com>
gcc/
* rtl.h (reg_attrs::offset): Change from HOST_WIDE_INT to poly_int64.
(gen_rtx_REG_offset): Take the offset as a poly_int64.
* inchash.h (inchash::hash::add_poly_hwi): New function.
* gengtype.c (main): Register poly_int64.
* emit-rtl.c (reg_attr_hasher::hash): Use inchash. Treat the
offset as a poly_int.
(reg_attr_hasher::equal): Use must_eq to compare offsets.
(get_reg_attrs, update_reg_offset, gen_rtx_REG_offset): Take the
offset as a poly_int64.
(set_reg_attrs_from_value): Treat the offset as a poly_int64.
* print-rtl.c (print_poly_int): New function.
(rtx_writer::print_rtx_operand_code_r): Treat REG_OFFSET as
a poly_int.
* var-tracking.c (track_offset_p, get_tracked_reg_offset): New
functions.
(var_reg_set, var_reg_delete_and_set, var_reg_delete): Use them.
(same_variable_part_p, track_loc_p): Take the offset as a poly_int64.
(vt_get_decl_and_offset): Return the offset as a poly_int64.
Enforce track_offset_p for parts of a PARALLEL.
(vt_add_function_parameter): Use const_offset for the final
offset to track. Use get_tracked_reg_offset for the parts
of a PARALLEL.
Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
Co-Authored-By: David Sherwood <david.sherwood@arm.com>
From-SVN: r255867
Diffstat (limited to 'gcc/inchash.h')
-rw-r--r-- | gcc/inchash.h | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/gcc/inchash.h b/gcc/inchash.h index 73930c2..6144629 100644 --- a/gcc/inchash.h +++ b/gcc/inchash.h @@ -63,6 +63,14 @@ class hash val = iterative_hash_host_wide_int (v, val); } + /* Add polynomial value V, treating each element as a HOST_WIDE_INT. */ + template<unsigned int N, typename T> + void add_poly_hwi (const poly_int_pod<N, T> &v) + { + for (unsigned int i = 0; i < N; ++i) + add_hwi (v.coeffs[i]); + } + /* Add wide_int-based value V. */ template<typename T> void add_wide_int (const generic_wide_int<T> &x) |