30
Fork 5
mirror of https://gcc.gnu.org/git/gcc.git synced 2026-06-10 13:59:42 +00:00
TEMPORARY mirror of https://gcc.gnu.org/git/gcc.git for https://forge.sourceware.org/ experimenting. ... DO NOT FORK THIS REPO! You want to fork https://forge.sourceware.org/gcc/gcc-TEST instead. ... Read https://gcc.gnu.org/wiki/ForgeExperiment first. https://gcc.gnu.org
  • C++ 30.7%
  • C 30.2%
  • Ada 14.3%
  • D 6.1%
  • Go 5.7%
  • Other 12.5%
Find a file
Jeff Law 2b3402f565 [RISC-V] Don't modify existing RTL in combined sCC splitters, generate new nodes instead
I was testing spec2017 late last week on the K3 design and stumbled across a
couple of functional fails.

In this particular case we mis-compiled omnet, thankfully in such a way that it
didn't really run at all, so time to failure was exceedingly short.

A couple months ago I extended our ability to recognize more czero sequences,
particularly in cases where we're combining the output of 2 or more sCC style
insns.  I took a bit of a short-cut and adjusted the code on a node I knew
would not be shared in the IL when doing a split.  I should have known better.
PUT_MODE and PUT_CODE are generally bad to use and I've called out others for
similar changes.

Consider if we're doing a 3->2 split, but when one of the two split insns do
not match.  In that scenario the PUT_CODE trick is going to cause problems
because we change the IL, but the transformation as a whole isn't applied.  In
this case we're inverting the mode (EQ->NE and NE->EQ), the net is we flip the
tense of a branch/sCC.

I never narrowed down a testcase.  This was found by inspecting codegen and
dump differences after bisecting to a change and bisecting down to a single .o
file.

This fixes the omnet failure.  There's a second cluster of failures (502.gcc)
which are unrelated and I'm still debugging those failures.

Bootstrapped and regression tested on riscv64.  Of course the original patch
survived that test as well, so perhaps take it with a mountain of salt rather
than the usual grain...  Waiting on pre-commit before moving forward.

	* config/riscv/zicond.md (combined sCC splitters): Avoid using
	PUT_MODE to change existing RTL.  Instead just generate a new node.
2026-06-10 07:35:14 -06:00
.forgejo forge: Add a prototype CODEOWNERS file 2026-06-05 17:58:58 +01:00
.github Minor formatting fix for newly-added file from previous commit 2023-11-01 19:28:56 -04:00
c++tools Update copyright years. 2026-01-02 09:56:11 +01:00
config Daily bump. 2026-05-06 00:16:29 +00:00
contrib Daily bump. 2026-06-09 08:53:25 +00:00
fixincludes Daily bump. 2026-05-31 00:16:35 +00:00
gcc [RISC-V] Don't modify existing RTL in combined sCC splitters, generate new nodes instead 2026-06-10 07:35:14 -06:00
gnattools Daily bump. 2026-05-11 00:16:22 +00:00
gotools Daily bump. 2024-04-16 00:18:06 +00:00
include Daily bump. 2026-06-02 00:16:46 +00:00
INSTALL README: Do not mention CVS. 2014-10-12 15:05:28 +00:00
libada Update copyright years. 2026-01-02 09:56:11 +01:00
libatomic Daily bump. 2026-06-02 00:16:46 +00:00
libbacktrace Daily bump. 2026-06-04 08:18:58 +00:00
libcc1 Daily bump. 2026-01-16 00:16:30 +00:00
libcody Daily bump. 2026-05-31 00:16:35 +00:00
libcpp Daily bump. 2026-05-31 00:16:35 +00:00
libdecnumber Daily bump. 2026-05-31 00:16:35 +00:00
libffi Daily bump. 2026-05-27 00:16:33 +00:00
libga68 Daily bump. 2026-05-31 00:16:35 +00:00
libgcc Daily bump. 2026-06-10 00:16:30 +00:00
libgcobol Daily bump. 2026-06-10 00:16:30 +00:00
libgfortran Daily bump. 2026-05-31 00:16:35 +00:00
libgm2 Daily bump. 2026-06-02 00:16:46 +00:00
libgo libgo: cmd/go: use 'gcloud storage cp' instead of 'gsutil cp' 2026-05-02 16:21:35 -07:00
libgomp Daily bump. 2026-06-09 08:53:25 +00:00
libgrust Update copyright years. 2026-01-02 09:56:11 +01:00
libiberty Daily bump. 2026-06-09 08:53:25 +00:00
libitm Daily bump. 2026-06-02 00:16:46 +00:00
libobjc Update copyright years. 2026-01-02 09:56:11 +01:00
libphobos Daily bump. 2026-04-22 00:16:28 +00:00
libquadmath Daily bump. 2026-05-31 00:16:35 +00:00
libsanitizer Daily bump. 2026-06-04 08:18:58 +00:00
libssp Daily bump. 2026-05-06 00:16:29 +00:00
libstdc++-v3 Daily bump. 2026-06-09 08:53:25 +00:00
libvtv Daily bump. 2026-05-31 00:16:35 +00:00
lto-plugin Daily bump. 2026-05-31 00:16:35 +00:00
maintainer-scripts Daily bump. 2026-04-23 00:16:32 +00:00
zlib Daily bump. 2025-12-30 00:16:33 +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
.editorconfig Configure EditorConfig for Git commit messages 2026-05-15 23:32:16 +00:00
.gitattributes Add *.md diff=md. 2020-01-15 14:29:53 +01:00
.gitignore Rust: Move 'libformat_parser' build into the GCC build directory 2025-08-05 16:36:43 +02:00
ABOUT-NLS intl: New directory; see intl/ChangeLog for details. 2003-07-04 18:18:54 +00:00
ar-lib Update GCC to autoconf 2.69, automake 1.15.1 (PR bootstrap/82856). 2018-10-31 17:03:16 +00:00
ChangeLog Daily bump. 2026-06-09 08:53:25 +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
compile Update from upstream Automake files. 2014-11-16 14:07:13 +00:00
config-ml.in toplevel: Unbreak Ada build [PR123490] 2026-01-10 11:36:25 +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 [PATCH v2 2/2] build: Set default for CPP_FOR_BUILD environment variable in all cases. 2026-05-01 11:39:05 -06:00
configure.ac [PATCH v2 2/2] build: Set default for CPP_FOR_BUILD environment variable in all cases. 2026-05-01 11:39:05 -06: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
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: Cherry-pick libtool.m4 support for GNU ld *_sol2 emulations 2025-12-29 12:09:35 +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
MAINTAINERS MAINTAINERS: Add missing account names 2026-06-03 17:10:53 +01:00
Makefile.def toplevel: Fix typos in build files 2026-05-30 19:49:31 +05:30
Makefile.in toplevel: Fix typos in build files 2026-05-30 19:49:31 +05:30
Makefile.tpl toplevel: Fix typos in build files 2026-05-30 19:49:31 +05:30
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
README * README: Document use of ranges of years in copyright notices. 2012-07-16 15:01:34 +01:00
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 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

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.