From: Richard Biener Date: Wed, 31 Jan 2018 13:07:53 +0000 (+0000) Subject: re PR tree-optimization/84132 (tree-data-ref.c:3938: poor coding ?) X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=957a25ab0c76a2beb268aad005804da41e136c37;p=gcc.git re PR tree-optimization/84132 (tree-data-ref.c:3938: poor coding ?) 2018-01-31 Richard Biener PR tree-optimization/84132 * tree-data-ref.c (analyze_miv_subscript): Properly check whether evolution_function_is_affine_multivariate_p before calling gcd_of_steps_may_divide_p. * g++.dg/torture/pr84132.C: New testcase. From-SVN: r257232 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 8368986fbc8..b1e0891ba8c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2018-01-31 Richard Biener + + PR tree-optimization/84132 + * tree-data-ref.c (analyze_miv_subscript): Properly + check whether evolution_function_is_affine_multivariate_p + before calling gcd_of_steps_may_divide_p. + 2018-01-31 Julia Koval PR target/83618 diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index eaa672beb24..e3f0c5aafcc 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2018-01-31 Richard Biener + + PR tree-optimization/84132 + * g++.dg/torture/pr84132.C: New testcase. + 2018-01-31 Jan Hubicka * g++.dg/torture/pr81360.C: Drop unintended -O2 from dg-options and diff --git a/gcc/testsuite/g++.dg/torture/pr84132.C b/gcc/testsuite/g++.dg/torture/pr84132.C new file mode 100644 index 00000000000..205b8f63812 --- /dev/null +++ b/gcc/testsuite/g++.dg/torture/pr84132.C @@ -0,0 +1,17 @@ +/* { dg-do compile } */ + +struct g { + char b; + unsigned char *d[]; +} e; +unsigned char f; +void i() +{ + for (int h;; h++) + { + unsigned a = h; + for (int c = 0; c < 256; c += 6) + for (int h = c; h < c + 6; h++) + e.d[h + a] = &f; + } +} diff --git a/gcc/tree-data-ref.c b/gcc/tree-data-ref.c index e39067d7134..0b6ad5fd529 100644 --- a/gcc/tree-data-ref.c +++ b/gcc/tree-data-ref.c @@ -3976,9 +3976,8 @@ analyze_miv_subscript (tree chrec_a, } else if (evolution_function_is_constant_p (difference) - /* For the moment, the following is verified: - evolution_function_is_affine_multivariate_p (chrec_a, - loop_nest->num) */ + && evolution_function_is_affine_multivariate_p (chrec_a, + loop_nest->num) && !gcd_of_steps_may_divide_p (chrec_a, difference)) { /* testsuite/.../ssa-chrec-33.c