Go to file
Jakub Jelinek a65420e1b5 gimplify: Fix up __builtin_c[lt]zg gimplification [PR122188]
The following testcase ICEs during gimplification.
The problem is that save_expr sometimes doesn't create a SAVE_EXPR but
returns the original complex tree (COND_EXPR) and the code then uses that
tree in 2 different spots without unsharing.  As this is done during
gimplification it wasn't unshared when whole body is unshared and because
gimplification is destructive, the first time we gimplify it we destruct it
and second time we try to gimplify it we ICE on it.
Now, we could replace one a use with unshare_expr (a), but because this
is a gimplification hook, I think easier than trying to create a save_expr
is just gimplify the argument, then we know it is is_gimple_val and so
something without side-effects and can safely use it twice.  That argument
would be the first thing to gimplify after return GS_OK anyway, so it
doesn't change argument sequencing etc.

2025-10-08  Jakub Jelinek  <jakub@redhat.com>

	PR c/122188
	* c-gimplify.cc (c_gimplify_expr): Gimplify CALL_EXPR_ARG (*expr_p, 0)
	instead of calling save_expr on it.

	* c-c++-common/pr122188.c: New test.

(cherry picked from commit bb22f7d4d6)
2025-10-14 20:05:17 +02:00
.forgejo top-level: Add pull request template for Forgejo 2024-10-23 19:45:09 +01:00
.github Minor formatting fix for newly-added file from previous commit 2023-11-01 19:28:56 -04: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-08-08 06:52:36 +00:00
config Update ChangeLog and version files for release 2025-08-08 06:52:36 +00:00
contrib Update ChangeLog and version files for release 2025-08-08 06:52:36 +00:00
fixincludes Daily bump. 2025-09-01 00:25:55 +00:00
gcc gimplify: Fix up __builtin_c[lt]zg gimplification [PR122188] 2025-10-14 20:05:17 +02:00
gnattools Update ChangeLog and version files for release 2025-08-08 06:52:36 +00:00
gotools Update ChangeLog and version files for release 2025-08-08 06:52:36 +00:00
include Update ChangeLog and version files for release 2025-08-08 06:52:36 +00:00
libada Update ChangeLog and version files for release 2025-08-08 06:52:36 +00:00
libatomic Update ChangeLog and version files for release 2025-08-08 06:52:36 +00:00
libbacktrace Update ChangeLog and version files for release 2025-08-08 06:52:36 +00:00
libcc1 Update ChangeLog and version files for release 2025-08-08 06:52:36 +00:00
libcody Update ChangeLog and version files for release 2025-08-08 06:52:36 +00:00
libcpp Daily bump. 2025-08-09 00:25:34 +00:00
libdecnumber Update ChangeLog and version files for release 2025-08-08 06:52:36 +00:00
libffi Update ChangeLog and version files for release 2025-08-08 06:52:36 +00:00
libgcc Daily bump. 2025-10-10 00:28:00 +00:00
libgcobol Update ChangeLog and version files for release 2025-08-08 06:52:36 +00:00
libgfortran Daily bump. 2025-08-14 00:26:58 +00:00
libgm2 Update ChangeLog and version files for release 2025-08-08 06:52:36 +00:00
libgo libgo: bump libgo version for GCC 15 release 2025-03-04 11:43:22 -08:00
libgomp Daily bump. 2025-09-26 00:25:10 +00:00
libgrust Update ChangeLog and version files for release 2025-08-08 06:52:36 +00:00
libiberty Update ChangeLog and version files for release 2025-08-08 06:52:36 +00:00
libitm Update ChangeLog and version files for release 2025-08-08 06:52:36 +00:00
libobjc Update ChangeLog and version files for release 2025-08-08 06:52:36 +00:00
libphobos Daily bump. 2025-09-08 00:27:38 +00:00
libquadmath Update ChangeLog and version files for release 2025-08-08 06:52:36 +00:00
libsanitizer Update ChangeLog and version files for release 2025-08-08 06:52:36 +00:00
libssp Update ChangeLog and version files for release 2025-08-08 06:52:36 +00:00
libstdc++-v3 Daily bump. 2025-09-25 00:28:17 +00:00
libvtv Update ChangeLog and version files for release 2025-08-08 06:52:36 +00:00
lto-plugin Update ChangeLog and version files for release 2025-08-08 06:52:36 +00:00
maintainer-scripts Update ChangeLog and version files for release 2025-08-08 06:52:36 +00:00
zlib Update ChangeLog and version files for release 2025-08-08 06:52:36 +00:00
.b4-config Add config file so b4 uses inbox.sourceware.org automatically 2024-07-28 11:13:16 +01:00
.dir-locals.el dir-locals: apply our C settings in C++ also 2024-07-31 20:38:27 +02:00
.gitattributes Add *.md diff=md. 2020-01-15 14:29:53 +01:00
.gitignore gccrs: git: Ignore libgrust build folders 2025-03-17 16:35:21 +01: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-08-08 06:52:36 +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 to Write After Approval 2025-04-16 07:26:50 -06:00
Makefile.def toplevel, libcobol: Add dependency on libquadmath build [PR119244]. 2025-03-25 19:31:10 +00:00
Makefile.in toplevel, libcobol: Add dependency on libquadmath build [PR119244]. 2025-03-25 19:31:10 +00:00
Makefile.tpl toplevel, Makefile: Add missing CXX_FOR_TARGET export [PR88319]. 2025-03-23 20:44:33 +00:00
README * README: Document use of ranges of years in copyright notices. 2012-07-16 15:01:34 +01:00
SECURITY.txt Remove Debian from SECURITY.txt 2024-11-19 12:27:33 +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 Remove extra argument from subst macro 2025-03-13 07:26:04 +01: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 cobol: Restrict COBOL to supported Linux arches [PR119217] 2025-04-22 13:49:03 +02:00
configure.ac cobol: Restrict COBOL to supported Linux arches [PR119217] 2025-04-22 13:49:03 +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 Build: fix error in fixinclude configure 2023-11-22 11:54:33 +01:00
ltgcc.m4 libtool.m4: Update to libtool 2.2.6. 2008-09-26 16:21:02 +00:00
ltmain.sh ltmain.sh: allow more flags at link-time 2024-09-25 19:05:24 +01: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.