From: Richard Biener Date: Wed, 7 May 2014 11:51:36 +0000 (+0000) Subject: backport: re PR tree-optimization/59164 (ice: tree check: expected tree that contains... X-Git-Tag: releases/gcc-4.7.4~110 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=338b4a6f09d849934b03d525f6de53f07e59bb0a;p=thirdparty%2Fgcc.git backport: re PR tree-optimization/59164 (ice: tree check: expected tree that contains ‘decl minimal’ structure, have ‘integer_cst’ in get_var_info, at tree-into-ssa.c:380) 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 --- 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.");