Commit a85d87b2 by Richard Sandiford Committed by Richard Sandiford

poly_int: get_inner_reference_aff

This patch makes get_inner_reference_aff return the size as a
poly_widest_int rather than a widest_int.

2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
	    Alan Hayward  <alan.hayward@arm.com>
	    David Sherwood  <david.sherwood@arm.com>

gcc/
	* tree-affine.h (get_inner_reference_aff): Return the size as a
	poly_widest_int.
	* tree-affine.c (get_inner_reference_aff): Likewise.
	* tree-data-ref.c (dr_may_alias_p): Update accordingly.
	* tree-ssa-loop-im.c (mem_refs_may_alias_p): Likewise.

Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
Co-Authored-By: David Sherwood <david.sherwood@arm.com>

From-SVN: r255891
parent c036acde
...@@ -2,6 +2,16 @@ ...@@ -2,6 +2,16 @@
Alan Hayward <alan.hayward@arm.com> Alan Hayward <alan.hayward@arm.com>
David Sherwood <david.sherwood@arm.com> David Sherwood <david.sherwood@arm.com>
* tree-affine.h (get_inner_reference_aff): Return the size as a
poly_widest_int.
* tree-affine.c (get_inner_reference_aff): Likewise.
* tree-data-ref.c (dr_may_alias_p): Update accordingly.
* tree-ssa-loop-im.c (mem_refs_may_alias_p): Likewise.
2017-12-20 Richard Sandiford <richard.sandiford@linaro.org>
Alan Hayward <alan.hayward@arm.com>
David Sherwood <david.sherwood@arm.com>
* fold-const.c (pointer_may_wrap_p): Take the offset as a * fold-const.c (pointer_may_wrap_p): Take the offset as a
HOST_WIDE_INT rather than a poly_int64. HOST_WIDE_INT rather than a poly_int64.
...@@ -927,7 +927,7 @@ debug_aff (aff_tree *val) ...@@ -927,7 +927,7 @@ debug_aff (aff_tree *val)
which REF refers. */ which REF refers. */
tree tree
get_inner_reference_aff (tree ref, aff_tree *addr, widest_int *size) get_inner_reference_aff (tree ref, aff_tree *addr, poly_widest_int *size)
{ {
HOST_WIDE_INT bitsize, bitpos; HOST_WIDE_INT bitsize, bitpos;
tree toff; tree toff;
......
...@@ -80,7 +80,7 @@ bool aff_combination_constant_multiple_p (aff_tree *, aff_tree *, ...@@ -80,7 +80,7 @@ bool aff_combination_constant_multiple_p (aff_tree *, aff_tree *,
void aff_combination_expand (aff_tree *, hash_map<tree, name_expansion *> **); void aff_combination_expand (aff_tree *, hash_map<tree, name_expansion *> **);
void tree_to_aff_combination_expand (tree, tree, aff_tree *, void tree_to_aff_combination_expand (tree, tree, aff_tree *,
hash_map<tree, name_expansion *> **); hash_map<tree, name_expansion *> **);
tree get_inner_reference_aff (tree, aff_tree *, widest_int *); tree get_inner_reference_aff (tree, aff_tree *, poly_widest_int *);
void free_affine_expand_cache (hash_map<tree, name_expansion *> **); void free_affine_expand_cache (hash_map<tree, name_expansion *> **);
bool aff_comb_cannot_overlap_p (aff_tree *, const poly_widest_int &, bool aff_comb_cannot_overlap_p (aff_tree *, const poly_widest_int &,
const poly_widest_int &); const poly_widest_int &);
......
...@@ -2134,7 +2134,7 @@ dr_may_alias_p (const struct data_reference *a, const struct data_reference *b, ...@@ -2134,7 +2134,7 @@ dr_may_alias_p (const struct data_reference *a, const struct data_reference *b,
if (!loop_nest) if (!loop_nest)
{ {
aff_tree off1, off2; aff_tree off1, off2;
widest_int size1, size2; poly_widest_int size1, size2;
get_inner_reference_aff (DR_REF (a), &off1, &size1); get_inner_reference_aff (DR_REF (a), &off1, &size1);
get_inner_reference_aff (DR_REF (b), &off2, &size2); get_inner_reference_aff (DR_REF (b), &off2, &size2);
aff_combination_scale (&off1, -1); aff_combination_scale (&off1, -1);
......
...@@ -1581,7 +1581,7 @@ mem_refs_may_alias_p (im_mem_ref *mem1, im_mem_ref *mem2, ...@@ -1581,7 +1581,7 @@ mem_refs_may_alias_p (im_mem_ref *mem1, im_mem_ref *mem2,
/* Perform BASE + OFFSET analysis -- if MEM1 and MEM2 are based on the same /* Perform BASE + OFFSET analysis -- if MEM1 and MEM2 are based on the same
object and their offset differ in such a way that the locations cannot object and their offset differ in such a way that the locations cannot
overlap, then they cannot alias. */ overlap, then they cannot alias. */
widest_int size1, size2; poly_widest_int size1, size2;
aff_tree off1, off2; aff_tree off1, off2;
/* Perform basic offset and type-based disambiguation. */ /* Perform basic offset and type-based disambiguation. */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment