mirror of
https://github.com/gcc-mirror/gcc.git
synced 2026-05-06 14:59:39 +02:00
40d6dbf0f8dd91db5e4c13187fc341cdef40b054
The following adds the ability to discover a reduction chain on a series of statements that invoke undefined behavior on integer overflow. This inhibits the reassoc pass from associating stmts in the way naturally leading to a reduction chain. The common mistake on the source side is to rely on the += operator to sum multiple inputs. After the refactoring of how we handle reduction chains we can easily use vect_slp_linearize_chain to do this our selves and rely on the vectorizer punning operations to unsigned given reduction vectorization always associates. PR tree-optimization/120687 * tree-vect-slp.cc (vect_analyze_slp_reduc_chain): When there's no natural reduction chain see if vect_slp_linearize_chain can recover one and built the SLP instance manually in that case. (vect_schedule_slp): Deal with NULL lanes when looking for stores to remove. * tree-vect-loop.cc (vect_transform_cycle_phi): Dump when we are successfully transforming a reduction chain. * gcc.dg/vect/vect-reduc-chain-4.c: New testcase.
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
This directory contains the GNU Compiler Collection (GCC). The GNU Compiler Collection is free software. See the files whose names start with COPYING for copying permission. The manuals, and some of the runtime libraries, are under different terms; see the individual source files for details. The directory INSTALL contains copies of the installation information as HTML and plain text. The source of this information is gcc/doc/install.texi. The installation information includes details of what is included in the GCC sources and what files GCC installs. See the file gcc/doc/gcc.texi (together with other files that it includes) for usage and porting information. An online readable version of the manual is in the files gcc/doc/gcc.info*. See http://gcc.gnu.org/bugs/ for how to report bugs usefully. Copyright years on GCC source files may be listed using range notation, e.g., 1987-2012, indicating that every year in the range, inclusive, is a copyrightable year that could otherwise be listed individually.
Description
Languages
C++
30.7%
C
30.2%
Ada
14.4%
D
6.1%
Go
5.7%
Other
12.4%