Patchwork [PR,45241] : CPU2006 465.tonto ICE in the vectorizer with -fno-tree-pre

login
register
mail settings
Submitter Ira Rosen
Date Aug. 12, 2010, 5:40 p.m.
Message ID <OFD24CAEE4.5D6B1D43-ONC225777D.00605FFB-C225777D.0061208E@il.ibm.com>
Download mbox | patch
Permalink /patch/61634/
State New
Headers show

Comments

Ira Rosen - Aug. 12, 2010, 5:40 p.m.
"Fang, Changpeng" <Changpeng.Fang@amd.com> wrote on 12/08/2010 08:12:02 PM:

> Hi, Ira:
>
> Thanks for your reviews. Attached is the updated patch.
> It passed bootstrapping  on x86_64-unknown-linux-gnu and
> the gcc regression tests (fixed PR 45241).
>
> Since bug 45241 is a [4.5/4.6] regression, is it ok to
> commit to 4.5 branch and 4.6 trunk?


> From: Ira Rosen [IRAR@il.ibm.com]
> Sent: Thursday, August 12, 2010 1:13 AM
> To: Fang, Changpeng
> Cc: gcc-patches@gcc.gnu.org
> Subject: Re: [Patch  PR 45241]:  CPU2006 465.tonto ICE in the
> vectorizer with -fno-tree-pre
>
> "Fang, Changpeng" <Changpeng.Fang@amd.com> wrote on 11/08/2010 08:36:42
PM:
>
> > Hi,
> >
> > Attached patch fixes bug 45241: CPU2006 465.tonto ICE in the
> > vectorizer with -fno-tree-pre.
> >
> > When the vectorizer tries to recognize the dot_prod pattern, it
> > traces the statements chain
> > outside the loop. As a result, ICE occurs when it tries to access
> > the stmt_vinfo for a stmt
> > outside the loop.
> >
> > This patch stops the pattern searching when the statement is already
> > outside the loop.
> > It passed bootstrapping in both the trunk and 4.5 branch.
>
> On which target? What about regtesting?
>
> >
> > The bug is 4.5/4.6 regression, and it prevents benchmarking for
> > cpu2006 with no PRE.
> >
> > Is it OK to commit to 4,5 branch (and 4.6 ?
> >
> > Thanks,
> >
> > Changpeng
> >
>
>
>         * gcc/tree-vect-patterns.c (vect_recog_dot_prod_pattern): Give
>
> No need in gcc/ before tree-vect-patterns.c.
>
>         up dor_prod pattern searching if a stmt is outside the loop.
>
> dot prod
>
>         * gcc.dg/vect/pr45241.c: New.
> ---
>  gcc/testsuite/gcc.dg/vect/pr45241.c |   19 +++++++++++++++++++
>  gcc/tree-vect-patterns.c            |    5 +++++
>  2 files changed, 24 insertions(+), 0 deletions(-)
>  create mode 100644 gcc/testsuite/gcc.dg/vect/pr45241.c
>
> diff --git a/gcc/testsuite/gcc.dg/vect/pr45241.c
> b/gcc/testsuite/gcc.dg/vect/pr45241.c
> new file mode 100644
> index 0000000..c04cf04
> --- /dev/null
> +++ b/gcc/testsuite/gcc.dg/vect/pr45241.c
> @@ -0,0 +1,19 @@
> +/* PR tree-optimization/45241 */
> +/* { dg-do compile } */
> +/* { dg-options "-O3 -ftree-pre" } */
>
> Instead of using dg-options please change the name of the test to
> no-tree-pre-pr45241.c.
>
> +
> +int
> +foo (short x)
> +{
> +  short i, y;
> +  int sum;
> +
> +  for (i = 0; i < x; i++)
> +    y = x * i;
> +
> +  for (i = x; i > 0; i--)
> +    sum += y;
> +
> +  return sum;
> +}
> +
>
> Please add
>
> /* { dg-final { cleanup-tree-dump "vect" } } */
>
> to the test.
>
> Thanks,
> Ira
>
>
> [attachment "0001-pr45241-give-up-dot_prod-pattern-searching-if-
> stmt-i.patch" deleted by Ira Rosen/Haifa/IBM]

Patch

--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/no-tree-pre-pr45241.c
@@ -0,0 +1,20 @@ 
+/* PR tree-optimization/45241 */
+/* { dg-do compile } */
+/* { dg-options "-O3 -fno-tree-pre" } */

This line is redundant. vect.exp applies -fno-tree-pre to tests named
no-tree-pre-*. And there is no need in -O3, the default -O2
-ftree-vectorize are enough.

OK for trunk with this fix.

Thanks,
Ira


>
> Thanks,
>
> Changpeng
>
>
> ________________________________________