55 lines
1.6 KiB
Diff
55 lines
1.6 KiB
Diff
|
|
This backport contains 1 patch from gcc main stream tree.
|
||
|
|
The commit id of these patchs list as following in the order of time.
|
||
|
|
|
||
|
|
0001-re-PR-tree-optimization-92555-ICE-in-exact_div-at-po.patch
|
||
|
|
f1e0c7e0eb3eafb122fc3d00242828c82a9286a2
|
||
|
|
|
||
|
|
diff -Nurp a/gcc/testsuite/gcc.dg/vect/pr92555.c b/gcc/testsuite/gcc.dg/vect/pr92555.c
|
||
|
|
--- a/gcc/testsuite/gcc.dg/vect/pr92555.c 1970-01-01 08:00:00.000000000 +0800
|
||
|
|
+++ b/gcc/testsuite/gcc.dg/vect/pr92555.c 2020-08-11 09:36:18.060000000 +0800
|
||
|
|
@@ -0,0 +1,22 @@
|
||
|
|
+/* { dg-do compile } */
|
||
|
|
+/* { dg-additional-options "-fwrapv" } */
|
||
|
|
+
|
||
|
|
+signed char rq;
|
||
|
|
+
|
||
|
|
+signed char
|
||
|
|
+pu (int tr, int al)
|
||
|
|
+{
|
||
|
|
+ signed char x8;
|
||
|
|
+
|
||
|
|
+ while (tr != 0)
|
||
|
|
+ {
|
||
|
|
+ for (x8 = 0; x8 >= 0; x8 += 2)
|
||
|
|
+ ;
|
||
|
|
+
|
||
|
|
+ rq ^= al ^ 1;
|
||
|
|
+ ++x8;
|
||
|
|
+ ++tr;
|
||
|
|
+ }
|
||
|
|
+
|
||
|
|
+ return x8;
|
||
|
|
+}
|
||
|
|
diff -Nurp a/gcc/tree-vect-loop.c b/gcc/tree-vect-loop.c
|
||
|
|
--- a/gcc/tree-vect-loop.c 2020-08-11 09:35:10.952000000 +0800
|
||
|
|
+++ b/gcc/tree-vect-loop.c 2020-08-11 09:36:18.064000000 +0800
|
||
|
|
@@ -1415,6 +1415,18 @@ vect_update_vf_for_slp (loop_vec_info lo
|
||
|
|
for (i = 0; i < nbbs; i++)
|
||
|
|
{
|
||
|
|
basic_block bb = bbs[i];
|
||
|
|
+ for (gphi_iterator si = gsi_start_phis (bb); !gsi_end_p (si);
|
||
|
|
+ gsi_next (&si))
|
||
|
|
+ {
|
||
|
|
+ stmt_vec_info stmt_info = loop_vinfo->lookup_stmt (si.phi ());
|
||
|
|
+ if (!stmt_info)
|
||
|
|
+ continue;
|
||
|
|
+ if ((STMT_VINFO_RELEVANT_P (stmt_info)
|
||
|
|
+ || VECTORIZABLE_CYCLE_DEF (STMT_VINFO_DEF_TYPE (stmt_info)))
|
||
|
|
+ && !PURE_SLP_STMT (stmt_info))
|
||
|
|
+ /* STMT needs both SLP and loop-based vectorization. */
|
||
|
|
+ only_slp_in_loop = false;
|
||
|
|
+ }
|
||
|
|
for (gimple_stmt_iterator si = gsi_start_bb (bb); !gsi_end_p (si);
|
||
|
|
gsi_next (&si))
|
||
|
|
{
|