aboutsummaryrefslogtreecommitdiff
path: root/libjava/classpath/vm/reference/java
diff options
context:
space:
mode:
authorHans-Peter Nilsson <hp@axis.com>2026-02-05 18:34:24 +0100
committerHans-Peter Nilsson <hp@gcc.gnu.org>2026-02-12 19:32:22 +0100
commit5bae3e8edcce9d53350c52ba5bcab6b7749fd1f5 (patch)
treee7ff32c4f8252b2ced9480197f1cdcac9be52ded /libjava/classpath/vm/reference/java
parent6eec7a3687aa8195eaf6b7f6694b50ece17590c5 (diff)
downloadgcc-5bae3e8edcce9d53350c52ba5bcab6b7749fd1f5.zip
gcc-5bae3e8edcce9d53350c52ba5bcab6b7749fd1f5.tar.gz
gcc-5bae3e8edcce9d53350c52ba5bcab6b7749fd1f5.tar.bz2
CRIS: Make sure movsf doesn't have two memory operands
Experimenting, I noticed movsf could get two memory operands, and when the pass I was hacking, adjusted both operands, the rtl-ssa framework didn't like the situation and signalled failure, for example compiling gcc.c-torture/compile/pr85945.c. While that's arguably a wart in rtl-ssa and may be a problem by itself, this shouldn't happen: one operand should be either a register or constant 0. It usually doesn't matter because RA fixes up operands per the constraints. Still, this is low-handing fruit for improved performance, letting the RTL passes work on more correct information ...and also, a plausible excuse for not also hacking rtl-ssa proper. Either way, the port is responsible for guarding operand validity, so tweak it. Incidental observation: the two-memory-operands case happened already at expand time. This mem-to-mem situation doesn't happen for movsi, because it has special precautions to keep one operand a register or const_int 0, which were added for reasons of condition-code handling. That particular condition, checking for REG_P or the subreg being REG_P looks too restrictive though, not allowing the (subreg mem) case that register_operand deliberately allows. * config/cris/cris.md (SISF): New mode_iterator for SI and SF. ("mov<mode>"): Make "movsi" a define_expand to include SFmode by means of the SISF iterator and adjust to also handle SFmode. ("*movsf_internal"): Anonymize "movsf"; make it a match-only pattern. Add conditions to guard from source and destination both being memory operands.
Diffstat (limited to 'libjava/classpath/vm/reference/java')
0 files changed, 0 insertions, 0 deletions