Watch
1
Fork
You've already forked gcc-TEST
0
forked from gcc/gcc
TEST repository for https://forge.sourceware.org/ experimenting.
  • C++ 30.8%
  • C 30.4%
  • Ada 14.2%
  • D 6%
  • Go 5.6%
  • Other 12.5%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Takayuki 'January June' Suwa c66387c4b2 xtensa: Simplify xtensa_valid_move()
The xtensa_valid_move() function, which is called from locations such as the
condition clause of the "movsi_internal" MD insn pattern, was introduced in
commit 71cc6aea
(about 24 years ago) to prevent a non-register source from being directly
assigned to the stack pointer when the "Windowed Register ABI" is configured
(in such cases, the MOVSP instruction must be used via a scratch register).

This is likely a workaround for the fact that Reload pass at the time was
too lenient (or loose) with respect to the operand constraints of the insn
pattern, and perhaps register allocation was performed under the assumption
that non-register sources could be assigned to hard registers belonging to
GENERAL_REGS (including the stack pointer in Xtensa).

However, LRA has now replaced old Reload for the Xtensa target; since both
instruction alternative selection and hard register allocation are performed
in strict adherence to operand constraints, it is no longer necessary to
employ workarounds like the one mentioned above.

In this case, for example, since there is no alternative that simultaneously
satisfies the constraints for the non-register source (such as a memory
reference) and the stack pointer destination, LRA correctly recognizes and
reloads the source into another scratch address (general-purpose) register.

Therefore, this patch removes the workaround code mentioned above in
xtensa_valid_move().

gcc/ChangeLog:

	* config/xtensa/xtensa.cc (xtensa_valid_move):
	Remove code that rejects non-register sources when the destination
	is the stack pointer.

gcc/testsuite:

	* gcc.target/xtensa/MOVSP.c: New test.
2026-09-15 11:15:29 -07: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-06-30 00:16:45 +00:00
config Daily bump. 2026-09-05 00:16:38 +00:00
contrib genattrtab: Distribute generated code across multiple files 2026-09-15 15:40:33 +02:00
fixincludes Daily bump. 2026-06-30 00:16:45 +00:00
gcc xtensa: Simplify xtensa_valid_move() 2026-09-15 11:15:29 -07:00
gnattools Daily bump. 2026-06-30 00:16:45 +00:00
gotools Daily bump. 2026-06-30 00:16:45 +00:00
include Daily bump. 2026-09-07 00:16:33 +00:00
INSTALL
libada Daily bump. 2026-06-30 00:16:45 +00:00
libatomic Daily bump. 2026-06-30 00:16:45 +00:00
libbacktrace Daily bump. 2026-09-04 00:16:40 +00:00
libcc1 Daily bump. 2026-06-30 00:16:45 +00:00
libcody Daily bump. 2026-05-31 00:16:35 +00:00
libcpp Daily bump. 2026-09-03 00:16:44 +00:00
libdecnumber Daily bump. 2026-05-31 00:16:35 +00:00
libffi Daily bump. 2026-06-18 00:16:35 +00:00
libga68 Daily bump. 2026-08-07 00:16:48 +00:00
libgcc Daily bump. 2026-09-12 00:16:35 +00:00
libgcobol Daily bump. 2026-09-11 08:56:57 +00:00
libgfortran Daily bump. 2026-09-07 00:16:33 +00:00
libgm2 PR modula2/127359: Building modula2 support requires bash installed in path 2026-09-15 10:11:41 +01: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-09-12 00:16:35 +00:00
libgrust Daily bump. 2026-06-30 00:16:45 +00:00
libiberty Daily bump. 2026-07-02 00:16:40 +00:00
libitm Daily bump. 2026-07-10 00:16:35 +00:00
libobjc Daily bump. 2026-06-30 00:16:45 +00:00
libphobos Daily bump. 2026-07-11 00:16:37 +00:00
libquadmath Daily bump. 2026-06-30 00:16:45 +00:00
libsanitizer Daily bump. 2026-07-24 00:16:42 +00:00
libssp Daily bump. 2026-07-04 00:16:37 +00:00
libstdc++-v3 libstdc++: Implement LWG 3749 changes to common_iterator 2026-09-15 09:59:29 +02:00
libvtv Daily bump. 2026-06-30 00:16:45 +00:00
lto-plugin Daily bump. 2026-06-30 00:16:45 +00:00
maintainer-scripts Daily bump. 2026-09-13 00:16:32 +00:00
zlib Daily bump. 2025-12-30 00:16:33 +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-09-11 08:56:57 +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.sub
configure Makefile.tpl: make the parallel bootstrap comparison portable [PR126875] 2026-09-04 15:16:54 +02:00
configure.ac configure: reject unsupported --with-long-double-64 option [PR122535] 2026-09-02 12:11:59 +05:30
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 to Write After Approval 2026-09-10 20:22:47 +05:30
MAINTAINERS.yml MAINTAINERS: Add myself to Write After Approval 2026-09-10 20:22:47 +05:30
Makefile.def toplevel: do not make libstdc++ configure wait for libgomp 2026-08-17 14:00:36 +02:00
Makefile.in Makefile.tpl: make the parallel bootstrap comparison portable [PR126875] 2026-09-04 15:16:54 +02:00
Makefile.tpl Makefile.tpl: make the parallel bootstrap comparison portable [PR126875] 2026-09-04 15:16:54 +02: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.