diff options
author | Keith Packard <keithp@keithp.com> | 2025-02-15 09:17:41 -0700 |
---|---|---|
committer | Jeff Law <jlaw@ventanamicro.com> | 2025-02-15 09:17:41 -0700 |
commit | 11cc336eed42892b7cfc2bfcf7b3f3f86f61787a (patch) | |
tree | c24df8a3c690cea6a9624ce57a64373954c23ee1 /gcc | |
parent | f9868e623fc80c6c6260c9dc6c7280db90433207 (diff) | |
download | gcc-11cc336eed42892b7cfc2bfcf7b3f3f86f61787a.zip gcc-11cc336eed42892b7cfc2bfcf7b3f3f86f61787a.tar.gz gcc-11cc336eed42892b7cfc2bfcf7b3f3f86f61787a.tar.bz2 |
[PATCH] rx: allow cmpstrnsi len to be zero
The SCMPU instruction doesn't change the C and Z flags when the
incoming length is zero, which means the insn will produce a
value based upon the existing flag values.
As a quick kludge, adjust these flags to ensure a zero result in this
case.
gcc/
* config/rx/rx.md (rx_cmpstrn): Correctly handle len=0 case.
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/config/rx/rx.md | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/gcc/config/rx/rx.md b/gcc/config/rx/rx.md index 8921158..edb2c96 100644 --- a/gcc/config/rx/rx.md +++ b/gcc/config/rx/rx.md @@ -2590,7 +2590,9 @@ (clobber (reg:SI 3)) (clobber (reg:CC CC_REG))] "rx_allow_string_insns" - "scmpu ; Perform the string comparison + "setpsw z ; Set flags in case len is zero + setpsw c + scmpu ; Perform the string comparison mov #-1, %0 ; Set up -1 result (which cannot be created ; by the SC insn) bnc ?+ ; If Carry is not set skip over |