Go to file
Alex Coplan 93e8fc9791 match.pd: Add missing type check to reduc(ctor) pattern [PR121772]
This is a cherry-pick of a7a9b7badc
together with a follow-up fix to the test
(0c670d3845) squashed into it.

In this PR we have a reduction of a vector constructor, where the
type of the constructor is int16x8_t and the elements are int16x4_t;
i.e. it is representing a concatenation of two vectors.

This triggers a match.pd pattern which looks like it was written to
handle reductions of vector constructors where the elements of the ctor
are scalars, not vectors.  There is no type check to enforce this
property, which leads to the pattern replacing a reduction to scalar
with an int16x4_t vector in this case, which of course is a type error,
leading to an invalid GIMPLE ICE.

This patch adds a type check to the pattern, only going ahead with the
transformation if the element type of the ctor matches that of the
reduction.

gcc/ChangeLog:

	PR tree-optimization/121772
	* match.pd: Add type check to reduc(ctor) pattern.

gcc/testsuite/ChangeLog:

	PR tree-optimization/121772
	* gcc.target/aarch64/torture/pr121772.c: New test.

(cherry picked from commit a7a9b7badc)
2025-10-16 15:27:35 +01:00
INSTALL README: Do not mention CVS. 2014-10-12 15:05:28 +00:00
c++tools Update ChangeLog and version files for release 2025-06-05 16:03:58 +00:00
config Update ChangeLog and version files for release 2025-06-05 16:03:58 +00:00
contrib Update ChangeLog and version files for release 2025-06-05 16:03:58 +00:00
fixincludes Update ChangeLog and version files for release 2025-06-05 16:03:58 +00:00
gcc match.pd: Add missing type check to reduc(ctor) pattern [PR121772] 2025-10-16 15:27:35 +01:00
gnattools Update ChangeLog and version files for release 2025-06-05 16:03:58 +00:00
gotools Update ChangeLog and version files for release 2025-06-05 16:03:58 +00:00
include Update ChangeLog and version files for release 2025-06-05 16:03:58 +00:00
intl Update ChangeLog and version files for release 2025-06-05 16:03:58 +00:00
libada Update ChangeLog and version files for release 2025-06-05 16:03:58 +00:00
libatomic Update ChangeLog and version files for release 2025-06-05 16:03:58 +00:00
libbacktrace Update ChangeLog and version files for release 2025-06-05 16:03:58 +00:00
libcc1 Update ChangeLog and version files for release 2025-06-05 16:03:58 +00:00
libcody Update ChangeLog and version files for release 2025-06-05 16:03:58 +00:00
libcpp Update ChangeLog and version files for release 2025-06-05 16:03:58 +00:00
libdecnumber Update ChangeLog and version files for release 2025-06-05 16:03:58 +00:00
libffi Update ChangeLog and version files for release 2025-06-05 16:03:58 +00:00
libgcc Daily bump. 2025-08-31 00:24:52 +00:00
libgfortran Update ChangeLog and version files for release 2025-06-05 16:03:58 +00:00
libgm2 Update ChangeLog and version files for release 2025-06-05 16:03:58 +00:00
libgo crypto/tls: fix Config.Time in tests using expired certificates 2025-05-15 08:50:43 +01:00
libgomp Update ChangeLog and version files for release 2025-06-05 16:03:58 +00:00
libiberty Update ChangeLog and version files for release 2025-06-05 16:03:58 +00:00
libitm Update ChangeLog and version files for release 2025-06-05 16:03:58 +00:00
libobjc Update ChangeLog and version files for release 2025-06-05 16:03:58 +00:00
libphobos Daily bump. 2025-09-08 00:23:30 +00:00
libquadmath Update ChangeLog and version files for release 2025-06-05 16:03:58 +00:00
libsanitizer Daily bump. 2025-08-01 00:23:25 +00:00
libssp Update ChangeLog and version files for release 2025-06-05 16:03:58 +00:00
libstdc++-v3 Daily bump. 2025-09-10 00:26:21 +00:00
libvtv Update ChangeLog and version files for release 2025-06-05 16:03:58 +00:00
lto-plugin Update ChangeLog and version files for release 2025-06-05 16:03:58 +00:00
maintainer-scripts Update ChangeLog and version files for release 2025-06-05 16:03:58 +00:00
zlib Update ChangeLog and version files for release 2025-06-05 16:03:58 +00:00
.dir-locals.el dir-locals: Use https for bug references 2021-07-20 11:40:34 +01:00
.gitattributes Add *.md diff=md. 2020-01-15 14:29:53 +01:00
.gitignore .gitignore: do not ignore config.h 2022-07-19 17:07:04 +03:00
ABOUT-NLS intl: New directory; see intl/ChangeLog for details. 2003-07-04 18:18:54 +00:00
COPYING COPYING, [...]: Sync from upstream sources. 2005-07-14 01:08:13 +00:00
COPYING.LIB Update COPYING.LIB from upstream. Correct last Changelog. 2005-07-14 01:41:54 +00:00
COPYING.RUNTIME Licensing changes to GPLv3 resp. GPLv3 with GCC Runtime Exception. 2009-04-09 17:00:19 +02:00
COPYING3 COPYING_v3: New file. 2007-07-17 08:37:53 +00:00
COPYING3.LIB COPYING_v3: New file. 2007-07-17 08:37:53 +00:00
ChangeLog Update ChangeLog and version files for release 2025-06-05 16:03:58 +00:00
ChangeLog.jit Merger of dmalcolm/jit branch from git 2014-11-11 21:55:52 +00:00
ChangeLog.tree-ssa Merge tree-ssa-20020619-branch into mainline. 2004-05-13 02:41:07 -04:00
MAINTAINERS MAINTAINERS: Add myself as CTF and BTF reviewer 2023-04-06 00:17:13 -07:00
Makefile.def configure: Do not build the ununsed libffi shared library. 2022-12-31 17:51:47 +00:00
Makefile.in Fix up postboot dependencies [PR106472] 2024-04-21 06:08:03 +02:00
Makefile.tpl Fix up postboot dependencies [PR106472] 2024-04-21 06:08:03 +02:00
README * README: Document use of ranges of years in copyright notices. 2012-07-16 15:01:34 +01:00
ar-lib Update GCC to autoconf 2.69, automake 1.15.1 (PR bootstrap/82856). 2018-10-31 17:03:16 +00:00
compile Update from upstream Automake files. 2014-11-16 14:07:13 +00:00
config-ml.in config-ml.in: Suppress output from multi-do recipes 2020-11-09 14:28:37 +00:00
config.guess config.sub, config.guess : Import upstream 2021-01-25. 2021-02-23 17:21:10 +08:00
config.rpath Remove freebsd1 from libtool.m4 macros and config.rpath. 2011-02-13 11:45:53 +00:00
config.sub config.sub: change mode to 755. 2021-12-21 09:10:57 +01:00
configure rust: Disable --enable-languages=rust and silently exclude it from --enable-languages=all for GCC 13 2023-04-18 12:18:13 +02:00
configure.ac rust: Disable --enable-languages=rust and silently exclude it from --enable-languages=all for GCC 13 2023-04-18 12:18:13 +02:00
depcomp Update from upstream Automake files. 2014-11-16 14:07:13 +00:00
install-sh Update from upstream Automake files. 2014-11-16 14:07:13 +00:00
libtool-ldflags re PR sanitizer/56781 (boostrap-asan failure: fixincl fails to link (missing -lasan)) 2014-04-17 14:23:28 +02:00
libtool.m4 Generic configury support for shared libs on VxWorks 2022-10-11 07:31:07 +00:00
ltgcc.m4 libtool.m4: Update to libtool 2.2.6. 2008-09-26 16:21:02 +00:00
ltmain.sh Do not use HAVE_DOS_BASED_FILE_SYSTEM for Cygwin. 2020-04-17 09:22:51 +02:00
ltoptions.m4 Sync from git Libtool and regenerate. 2009-12-05 17:18:53 +00:00
ltsugar.m4 libtool.m4: Update to libtool 2.2.6. 2008-09-26 16:21:02 +00:00
ltversion.m4 Sync from git Libtool and regenerate. 2009-12-05 17:18:53 +00:00
lt~obsolete.m4 Sync from git Libtool and regenerate. 2009-12-05 17:18:53 +00:00
missing Update from upstream Automake files. 2014-11-16 14:07:13 +00:00
mkdep merge with /cvs/src 2000-07-22 04:08:22 -04:00
mkinstalldirs Update from upstream Automake files. 2014-11-16 14:07:13 +00:00
move-if-change Update move-if-change from gnulib 2014-11-16 16:12:44 +00:00
multilib.am Update GCC to autoconf 2.69, automake 1.15.1 (PR bootstrap/82856). 2018-10-31 17:03:16 +00:00
symlink-tree COPYING, [...]: Sync from upstream sources. 2005-07-14 01:08:13 +00:00
test-driver Update GCC to autoconf 2.69, automake 1.15.1 (PR bootstrap/82856). 2018-10-31 17:03:16 +00:00
ylwrap Update from upstream Automake files. 2014-11-16 14:07:13 +00:00

README

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.