https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92222

--- Comment #4 from Richard Biener <rguenth at gcc dot gnu.org> ---
Caused by r263290.  From the log:

I'm also not sure why:

          if (!first && !oprnd_info->first_pattern
              /* Allow different pattern state for the defs of the
                 first stmt in reduction chains.  */
              && (oprnd_info->first_dt != vect_reduction_def

is necessary.  All that should matter is that the statements in the
node are "similar enough".  It turned out to be quite hard to find a
convincing example that used a mixture of pattern and non-pattern
statements, so bb-slp-pow-1.c is the best I could come up with.
But it does show that the combination of "xi * xi" statements and
"pow (xj, 2) -> xj * xj" patterns are handled correctly.

The patch therefore just removes the whole if block.

But the build-from scalars check relied on it.

Reply via email to