From: Kewen Lin Date: Fri, 3 Apr 2020 07:10:08 +0000 (-0500) Subject: Fix PR94443 with gsi_insert_seq_before [PR94443] X-Git-Tag: misc/first-auto-changelog-9~119 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7bce1c72444bb3c9636b492975a0494b376678cf;p=thirdparty%2Fgcc.git Fix PR94443 with gsi_insert_seq_before [PR94443] This patch is to fix the stupid mistake by using gsi_insert_seq_before instead of gsi_insert_before. BTW, the regression testing on one x86_64 machine from CFarm is unable to reveal it (I guess due to native arch sandybridge?), so I specified additional option -march=znver2 and verified the coverage. Bootstrapped/regtested on powerpc64le-linux-gnu (P9) and x86_64-pc-linux-gnu, also verified the fail cases in related PRs. Backport from mainline. 2020-04-03 Kewen Lin gcc/ PR tree-optimization/94443 * tree-vect-loop.c (vectorizable_live_operation): Use gsi_insert_seq_before to replace gsi_insert_before. gcc/testsuite/ PR tree-optimization/94443 * gcc.dg/vect/pr94443.c: New test. --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 79c7e50f44bf..29f9f52067d4 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +2020-04-17 Kewen Lin + + Backport from mainline + 2020-04-03 Kewen Lin + + PR tree-optimization/94443 + * tree-vect-loop.c (vectorizable_live_operation): Use + gsi_insert_seq_before to replace gsi_insert_before. + 2020-04-17 Kewen Lin Backport from mainline diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 09443adbbd8a..8742d27ce2f4 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,11 @@ +2020-04-17 Kewen Lin + + Backport from mainline + 2020-04-03 Kewen Lin + + PR tree-optimization/94443 + * gcc.dg/vect/pr94443.c: New test. + 2020-04-17 Kewen Lin Backport from mainline diff --git a/gcc/testsuite/gcc.dg/vect/pr94443.c b/gcc/testsuite/gcc.dg/vect/pr94443.c new file mode 100644 index 000000000000..f8cbaf1b9ce9 --- /dev/null +++ b/gcc/testsuite/gcc.dg/vect/pr94443.c @@ -0,0 +1,13 @@ +/* { dg-do compile } */ +/* { dg-additional-options "-march=znver2" { target { x86_64-*-* i?86-*-* } } } */ + +/* Check it to be compiled successfully without any ICE. */ + +int a; +unsigned *b; + +void foo() +{ + for (unsigned i; i <= a; ++i, ++b) + ; +} diff --git a/gcc/tree-vect-loop.c b/gcc/tree-vect-loop.c index 67bdd2e3fc60..ed6586753c53 100644 --- a/gcc/tree-vect-loop.c +++ b/gcc/tree-vect-loop.c @@ -7994,7 +7994,7 @@ vectorizable_live_operation (stmt_vec_info stmt_info, if (stmts) { gimple_stmt_iterator exit_gsi = gsi_after_labels (exit_bb); - gsi_insert_before (&exit_gsi, stmts, GSI_CONTINUE_LINKING); + gsi_insert_seq_before (&exit_gsi, stmts, GSI_SAME_STMT); /* Remove existing phi from lhs and create one copy from new_tree. */ tree lhs_phi = NULL_TREE; @@ -8007,7 +8007,7 @@ vectorizable_live_operation (stmt_vec_info stmt_info, remove_phi_node (&gsi, false); lhs_phi = gimple_phi_result (phi); gimple *copy = gimple_build_assign (lhs_phi, new_tree); - gsi_insert_after (&exit_gsi, copy, GSI_CONTINUE_LINKING); + gsi_insert_before (&exit_gsi, copy, GSI_SAME_STMT); break; } }