No description
  • C++ 30.7%
  • C 30.4%
  • Ada 14.1%
  • D 6%
  • Go 5.6%
  • Other 12.7%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Kyrylo Tkachov e08ae151a4 gimple-fold: Test the outer comparison in same_bool_comparison_p
same_bool_comparison_p (EXPR, CODE, OP1, OP2) checks whether EXPR is
equivalent to OP1 CODE OP2.  If OP1 is a Boolean SSA name defined by a
comparison, it handles OP1 != 0 and OP1 == 0 by recursing on that
comparison or its inverse.  It tests the code of the defining comparison
instead of CODE, though.  For M_1 = x_10(D) != y_11(D) it therefore
treats M_1 <= 1, which is always true, as x_10(D) == y_11(D), and
reassoc folds Z_17 in

  V_7 = I1_5 & I2_6;
  W_14 = V_7 == 0;
  T_15 = M_1 != 0;
  Z_17 = W_14 & T_15;

to false, where I1_5 is x_10(D) == y_11(D) and I2_6 is M_1 <= 1.

Test CODE.  The inverted branch can then see any comparison code, so
honour NaNs when inverting it and give up when the inverse does not
exist.  The front ends fold such comparisons of Boolean values, so only
GIMPLE input reaches the wrong answer.

Bootstrapped and tested on aarch64-linux-gnu and x86_64-linux-gnu.

gcc/ChangeLog:

	* gimple-fold.cc (same_bool_comparison_p): Test the code of the
	outer comparison, not that of the definition of OP1.  Honour NaNs
	when inverting the definition.

gcc/testsuite/ChangeLog:

	* gcc.dg/tree-ssa/reassoc-55.c: New test.
	* gcc.dg/tree-ssa/ssa-ifcombine-nan-3.c: New test.

Signed-off-by: Kyrylo Tkachov <ktkachov@nvidia.com>
2026-11-10 11:44:06 +01:00
.forgejo forge: Add a prototype CODEOWNERS file 2026-06-05 17:58:58 +01:00
.github Mention the forge on unofficial mirrors 2026-07-24 07:43:47 +00:00
c++tools Daily bump. 2026-10-21 00:16:50 +00:00
config Daily bump. 2026-11-10 00:16:44 +00:00
contrib [PATCH 2/2] contrib: Make Python scripts more portable 2026-11-09 18:12:57 -07:00
fixincludes Daily bump. 2026-10-18 00:16:37 +00:00
gcc gimple-fold: Test the outer comparison in same_bool_comparison_p 2026-11-10 11:44:06 +01:00
gnattools Regenerate configure files 2026-11-09 21:47:56 -05:00
gotools configury: Stop using AC_CANONICAL_SYSTEM [PR103459] 2026-11-09 21:47:56 -05:00
include Daily bump. 2026-10-31 00:16:39 +00:00
INSTALL
libada Daily bump. 2026-11-10 00:16:44 +00:00
libatomic configury: Stop using AC_CANONICAL_SYSTEM [PR103459] 2026-11-09 21:47:56 -05:00
libbacktrace Daily bump. 2026-11-05 00:16:50 +00:00
libcc1 Daily bump. 2026-10-18 00:16:37 +00:00
libcody Daily bump. 2026-05-31 00:16:35 +00:00
libcpp Daily bump. 2026-11-09 00:16:35 +00:00
libdecnumber Daily bump. 2026-10-11 00:16:32 +00:00
libffi Daily bump. 2026-10-17 00:16:56 +00:00
libga68 configury: Stop using AC_CANONICAL_SYSTEM [PR103459] 2026-11-09 21:47:56 -05:00
libgcc libgcc: Simplify finding libgcc_topdir 2026-11-09 21:57:25 -05:00
libgcobol configury: Stop using AC_CANONICAL_SYSTEM [PR103459] 2026-11-09 21:47:56 -05:00
libgfortran configury: Stop using AC_CANONICAL_SYSTEM [PR103459] 2026-11-09 21:47:56 -05:00
libgm2 configury: Stop using AC_CANONICAL_SYSTEM [PR103459] 2026-11-09 21:47:56 -05:00
libgo Always define WIN32_LEAN_AND_MEAN before <windows.h> 2026-10-22 13:28:31 +00:00
libgomp configury: Stop using AC_CANONICAL_SYSTEM [PR103459] 2026-11-09 21:47:56 -05:00
libgrust configury: Stop using AC_CANONICAL_SYSTEM [PR103459] 2026-11-09 21:47:56 -05:00
libiberty libiberty: Simplify finding libiberty_topdir 2026-11-09 21:58:33 -05:00
libitm configury: Stop using AC_CANONICAL_SYSTEM [PR103459] 2026-11-09 21:47:56 -05:00
libobjc Daily bump. 2026-11-03 00:16:43 +00:00
libphobos configury: Stop using AC_CANONICAL_SYSTEM [PR103459] 2026-11-09 21:47:56 -05:00
libquadmath configury: Stop using AC_CANONICAL_SYSTEM [PR103459] 2026-11-09 21:47:56 -05:00
libsanitizer configury: Stop using AC_CANONICAL_SYSTEM [PR103459] 2026-11-09 21:47:56 -05:00
libssp configury: Stop using AC_CANONICAL_SYSTEM [PR103459] 2026-11-09 21:47:56 -05:00
libstdc++-v3 configury: Stop using AC_CANONICAL_SYSTEM [PR103459] 2026-11-09 21:47:56 -05:00
libvtv configury: Stop using AC_CANONICAL_SYSTEM [PR103459] 2026-11-09 21:47:56 -05:00
lto-plugin Daily bump. 2026-06-30 00:16:45 +00:00
maintainer-scripts Daily bump. 2026-10-26 00:16:34 +00:00
zlib Daily bump. 2026-10-28 00:16:51 +00:00
.b4-config
.dir-locals.el
.editorconfig editorconfig: Add rules for yaml/yml files. 2026-07-07 11:02:11 +01:00
.gitattributes
.gitignore Add a pyproject.toml file 2026-08-19 10:51:25 +00:00
ABOUT-NLS
ar-lib
ChangeLog Daily bump. 2026-11-10 00:16:44 +00:00
ChangeLog.jit
ChangeLog.tree-ssa
compile
config-ml.in toplevel: Unbreak Ada build [PR123490] 2026-01-10 11:36:25 +01:00
config.guess
config.rpath config: Update config.rpath from gnulib 2026-10-07 15:12:26 +02:00
config.sub
configure introduce ADAC to specify Ada compiler 2026-11-09 17:18:01 -03:00
configure.ac Cygwin: enable libgccjit not just for MinGW 2026-10-20 16:54:36 +00:00
COPYING
COPYING.LIB
COPYING.RUNTIME
COPYING3
COPYING3.LIB
depcomp
install-sh
libtool-ldflags
libtool.m4 build: Cherry-pick libtool.m4 support for GNU ld *_sol2 emulations 2025-12-29 12:09:35 +01:00
ltgcc.m4
ltmain.sh
ltoptions.m4
ltsugar.m4
ltversion.m4
lt~obsolete.m4
MAINTAINERS MAINTAINERS: Add myself 2026-11-09 16:54:57 +00:00
MAINTAINERS.yml MAINTAINERS: Add myself 2026-11-09 16:54:57 +00:00
Makefile.def build: let configure-gcc start once gmp is configured 2026-10-21 11:02:19 +02:00
Makefile.in introduce ADAC to specify Ada compiler 2026-11-09 17:18:01 -03:00
Makefile.tpl introduce ADAC to specify Ada compiler 2026-11-09 17:18:01 -03:00
missing
mkdep
mkinstalldirs
move-if-change
multilib.am
pyproject.toml Add a pyproject.toml file 2026-08-19 10:51:25 +00:00
README
SECURITY.txt a68: top-level misc files 2025-11-30 01:52:24 +01:00
symlink-tree bugzilla: remove gcc-bugs@ mailing list address 2026-01-09 11:10:38 +01:00
test-driver
ylwrap

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.