r263773 - in /trunk/gcc: ChangeLog testsuite/Ch...
rsandifo@gcc.gnu.org
rsandifo@gcc.gnu.org
Wed Aug 22 13:02:00 GMT 2018
Author: rsandifo
Date: Wed Aug 22 13:02:39 2018
New Revision: 263773
URL: https://gcc.gnu.org/viewcvs?rev=263773&root=gcc&view=rev
Log:
[1/2] Fix bogus double reduction (PR 86725)
This patch is the first part of the fix for PR 86725. We would
treat x_1 in:
outer1:
x_1 = PHI <x_4(outer2), ...>;
...
inner:
x_2 = ...x_1...;
...
x_3 = ...;
...
outer2:
x_4 = PHI <x_3(inner)>;
...
as a double reduction without checking what kind of statement x_2 is.
In practice it has to be a phi, since for other x_2, x_1 would simply
be a loop invariant that gets used for every inner loop iteration.
The idea with doing this patch first is that, by checking x_2 really
is a phi, we can hand off the validation of the rest of the reduction
to the phi analysis in the inner loop.
The test case is a variant of the one in the PR.
2018-08-22 Richard Sandiford <richard.sandiford@arm.com>
gcc/
PR tree-optimization/86725
* tree-vect-loop.c (vect_is_simple_reduction): When treating
an outer loop phi as a double reduction, make sure that the
single user of the phi result is an inner loop phi.
gcc/testsuite/
PR tree-optimization/86725
* gcc.dg/vect/no-scevccp-pr86725-1.c: New test.
Added:
trunk/gcc/testsuite/gcc.dg/vect/no-scevccp-pr86725-1.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/testsuite/ChangeLog
trunk/gcc/tree-vect-loop.c
More information about the Gcc-cvs
mailing list