From 338b4a6f09d849934b03d525f6de53f07e59bb0a Mon Sep 17 00:00:00 2001 From: Richard Biener Date: Wed, 7 May 2014 11:51:36 +0000 Subject: [PATCH] =?utf8?q?backport:=20re=20PR=20tree-optimization/59164=20?= =?utf8?q?(ice:=20tree=20check:=20expected=20tree=20that=20contains=20?= =?utf8?q?=E2=80=98decl=20minimal=E2=80=99=20structure,=20have=20=E2=80=98?= =?utf8?q?integer=5Fcst=E2=80=99=20in=20get=5Fvar=5Finfo,=20at=20tree-into?= =?utf8?q?-ssa.c:380)?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit 2014-05-07 Richard Biener Backport from mainline 2013-11-19 Richard Biener PR tree-optimization/59164 * tree-vect-loop.c (vect_analyze_loop_operations): Adjust check whether we can create an epilogue loop to reflect the cases where we create one. * gcc.dg/torture/pr59164.c: New testcase. From-SVN: r210154 --- gcc/ChangeLog | 10 ++++++++++ gcc/testsuite/ChangeLog | 8 ++++++++ gcc/testsuite/gcc.dg/torture/pr59164.c | 21 +++++++++++++++++++++ gcc/tree-vect-loop.c | 2 +- 4 files changed, 40 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/gcc.dg/torture/pr59164.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 156b5a550ce6..8e1bbfc8083d 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,13 @@ +2014-05-07 Richard Biener + + Backport from mainline + 2013-11-19 Richard Biener + + PR tree-optimization/59164 + * tree-vect-loop.c (vect_analyze_loop_operations): Adjust + check whether we can create an epilogue loop to reflect the + cases where we create one. + 2014-05-07 Richard Biener Backport from mainline diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 2bd98d4f0525..9ae3e94ca1f6 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,11 @@ +2014-05-07 Richard Biener + + Backport from mainline + 2013-11-19 Richard Biener + + PR tree-optimization/59164 + * gcc.dg/torture/pr59164.c: New testcase. + 2014-05-07 Richard Biener Backport from mainline diff --git a/gcc/testsuite/gcc.dg/torture/pr59164.c b/gcc/testsuite/gcc.dg/torture/pr59164.c new file mode 100644 index 000000000000..1ec69610c21d --- /dev/null +++ b/gcc/testsuite/gcc.dg/torture/pr59164.c @@ -0,0 +1,21 @@ +/* { dg-do compile } */ + +int a, d, e; +long b[10]; +int c[10][8]; + +int fn1(p1) +{ + return 1 >> p1; +} + +void fn2(void) +{ + int f; + for (a=1; a <= 4; a++) + { + f = fn1(0 < c[a][0]); + if (f || d) + e = b[a] = 1; + } +} diff --git a/gcc/tree-vect-loop.c b/gcc/tree-vect-loop.c index b6f85d8e19c7..c73d758570fb 100644 --- a/gcc/tree-vect-loop.c +++ b/gcc/tree-vect-loop.c @@ -1466,7 +1466,7 @@ vect_analyze_loop_operations (loop_vec_info loop_vinfo, bool slp) if (!LOOP_VINFO_NITERS_KNOWN_P (loop_vinfo) || LOOP_VINFO_INT_NITERS (loop_vinfo) % vectorization_factor != 0 - || LOOP_PEELING_FOR_ALIGNMENT (loop_vinfo)) + || LOOP_VINFO_PEELING_FOR_GAPS (loop_vinfo)) { if (vect_print_dump_info (REPORT_DETAILS)) fprintf (vect_dump, "epilog loop required."); -- 2.47.2