poly_int: get_inner_reference_aff
authorRichard Sandiford <richard.sandiford@linaro.org>
Wed, 20 Dec 2017 12:56:12 +0000 (12:56 +0000)
committerRichard Sandiford <rsandifo@gcc.gnu.org>
Wed, 20 Dec 2017 12:56:12 +0000 (12:56 +0000)
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

gcc/ChangeLog
gcc/tree-affine.c
gcc/tree-affine.h
gcc/tree-data-ref.c
gcc/tree-ssa-loop-im.c

index 9a60b00e19b1455f61909f281e72bab93510fdab..70e8c1a5e46270053b93f1f31a14f779411bb893 100644 (file)
@@ -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>
index 3869b0be036fa88f2f0a634e6a7a88d76422676c..5c6bb7d09063d3e5712348cabbe3229602709ed1 100644 (file)
@@ -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;
index d6802ebd093d121c6719314f865aa6d8eaafc703..d2140b7262d6dbd604f24a61d92f4db3e16c4794 100644 (file)
@@ -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 &);
index 50e11f5765a7de040e4071c644934581361c6fa5..4b805aaa612e78a6c07a710bcf4a0e4027bc3834 100644 (file)
@@ -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);
index e0e1556516d3d0782944de4558d503d5e87f0a35..e62759b4bd4a551578af06a93d1a2ec58e7331d3 100644 (file)
@@ -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.  */