Fix PR94443 with gsi_insert_seq_before

Message ID e6227dc6-439c-d232-2897-1ece5dc05a6f@linux.ibm.com
State New
Headers show
Series
  • Fix PR94443 with gsi_insert_seq_before
Related show

Commit Message

David Edelsohn via Gcc-patches April 2, 2020, 10:43 a.m.
on 2020/4/2 上午6:51, H.J. Lu wrote:
> 

> This caused:

> 

> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94449

> 


Thanks for reporting this.  The attached 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.


BR,
Kewen
-----------
gcc/ChangeLog

2020-04-02  Kewen Lin  <linkw@gcc.gnu.org>

	PR tree-optimization/94443
	* tree-vect-loop.c (vectorizable_live_operation): Use
	gsi_insert_seq_before to replace gsi_insert_before.

gcc/testsuite/ChangeLog

2020-04-02  Kewen Lin  <linkw@gcc.gnu.org>

	PR tree-optimization/94443
	* gcc.dg/vect/pr94443.c: New test.

Comments

David Edelsohn via Gcc-patches April 2, 2020, 6:55 p.m. | #1
On Thu, Apr 2, 2020 at 3:43 AM Kewen.Lin <linkw@linux.ibm.com> wrote:
>

> on 2020/4/2 上午6:51, H.J. Lu wrote:

> >

> > This caused:

> >

> > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94449

> >

>

> Thanks for reporting this.  The attached 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.

>

>

> BR,

> Kewen

> -----------

> gcc/ChangeLog

>

> 2020-04-02  Kewen Lin  <linkw@gcc.gnu.org>

>

>         PR tree-optimization/94443

>         * tree-vect-loop.c (vectorizable_live_operation): Use

>         gsi_insert_seq_before to replace gsi_insert_before.

>

> gcc/testsuite/ChangeLog

>

> 2020-04-02  Kewen Lin  <linkw@gcc.gnu.org>

>

>         PR tree-optimization/94443

>         * gcc.dg/vect/pr94443.c: New test.

>


I verified that this fixed my bug:

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94449

Thanks.

-- 
H.J.
David Edelsohn via Gcc-patches April 3, 2020, 7:01 a.m. | #2
On Thu, Apr 2, 2020 at 12:43 PM Kewen.Lin <linkw@linux.ibm.com> wrote:
>

> on 2020/4/2 上午6:51, H.J. Lu wrote:

> >

> > This caused:

> >

> > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94449

> >

>

> Thanks for reporting this.  The attached 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.


OK.

Richard.

>

> BR,

> Kewen

> -----------

> gcc/ChangeLog

>

> 2020-04-02  Kewen Lin  <linkw@gcc.gnu.org>

>

>         PR tree-optimization/94443

>         * tree-vect-loop.c (vectorizable_live_operation): Use

>         gsi_insert_seq_before to replace gsi_insert_before.

>

> gcc/testsuite/ChangeLog

>

> 2020-04-02  Kewen Lin  <linkw@gcc.gnu.org>

>

>         PR tree-optimization/94443

>         * gcc.dg/vect/pr94443.c: New test.

>

Patch

diff --git a/gcc/testsuite/gcc.dg/vect/pr94443.c b/gcc/testsuite/gcc.dg/vect/pr94443.c
new file mode 100644
index 0000000..f8cbaf1
--- /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 c9b6534..34adf79 100644
--- a/gcc/tree-vect-loop.c
+++ b/gcc/tree-vect-loop.c
@@ -8050,7 +8050,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;
@@ -8063,7 +8063,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;
 	    }
 	}