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
This commit is contained in:
parent
c036acdeec
commit
a85d87b20c
5 changed files with 14 additions and 4 deletions
|
@ -1,3 +1,13 @@
|
|||
2017-12-20 Richard Sandiford <richard.sandiford@linaro.org>
|
||||
Alan Hayward <alan.hayward@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>
|
||||
|
|
|
@ -927,7 +927,7 @@ debug_aff (aff_tree *val)
|
|||
which REF refers. */
|
||||
|
||||
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;
|
||||
tree toff;
|
||||
|
|
|
@ -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 tree_to_aff_combination_expand (tree, tree, aff_tree *,
|
||||
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 *> **);
|
||||
bool aff_comb_cannot_overlap_p (aff_tree *, 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,
|
|||
if (!loop_nest)
|
||||
{
|
||||
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 (b), &off2, &size2);
|
||||
aff_combination_scale (&off1, -1);
|
||||
|
|
|
@ -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
|
||||
object and their offset differ in such a way that the locations cannot
|
||||
overlap, then they cannot alias. */
|
||||
widest_int size1, size2;
|
||||
poly_widest_int size1, size2;
|
||||
aff_tree off1, off2;
|
||||
|
||||
/* Perform basic offset and type-based disambiguation. */
|
||||
|
|
Loading…
Add table
Reference in a new issue