re PR tree-optimization/69719 (wrong code at -O3 on x86_64-linux-gnu)
authorRichard Biener <rguenther@suse.de>
Wed, 10 Feb 2016 08:36:03 +0000 (08:36 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Wed, 10 Feb 2016 08:36:03 +0000 (08:36 +0000)
2016-02-10  Richard Biener  <rguenther@suse.de>

PR tree-optimization/69719
* tree-vect-data-refs.c (vect_prune_runtime_alias_test_list):
Adjust previous fix by ensuring that dr_a1 is left of dr_a2.

From-SVN: r233262

gcc/ChangeLog
gcc/tree-vect-data-refs.c

index fed32beda35a12f6cae5f8b8d78d37484d9ea9ca..3f3f734afe8d1cf601c187760f7bb1f41167826a 100644 (file)
@@ -1,3 +1,9 @@
+2016-02-10  Richard Biener  <rguenther@suse.de>
+
+       PR tree-optimization/69719
+       * tree-vect-data-refs.c (vect_prune_runtime_alias_test_list):
+       Adjust previous fix by ensuring that dr_a1 is left of dr_a2.
+
 2016-02-09  Andrew Pinski  <apinski@cavium.com>
 
        PR tree-opt/69282
index 49e871b1411d9690d9b1749ba535b7481f52ce16..5d830280addf6034493e0d2e5f1f19d81c696b82 100644 (file)
@@ -3081,9 +3081,12 @@ vect_prune_runtime_alias_test_list (loop_vec_info loop_vinfo)
              || !tree_fits_shwi_p (dr_a2->offset))
            continue;
 
+         /* Make sure dr_a1 starts left of dr_a2.  */
+         if (tree_int_cst_lt (dr_a2->offset, dr_a1->offset))
+           std::swap (*dr_a1, *dr_a2);
+
          unsigned HOST_WIDE_INT diff
-           = absu_hwi (tree_to_shwi (dr_a2->offset)
-                       - tree_to_shwi (dr_a1->offset));
+           = tree_to_shwi (dr_a2->offset) - tree_to_shwi (dr_a1->offset);
 
 
          /* Now we check if the following condition is satisfied: