My recent tweak to the zeroextendqihi2 pattern on xstormy16 incorrectly
handled the case where the operand was a MEM.  MEM operands use a longer
encoding than REG operands, and the incorrect instruction length resulted
in assembler errors (as reported by Jeff Law).  This patch restores the
original length resolving this regression.  Sorry for the inconvenience.
Committed as obvious, after testing that a cross-compiler to xstormy16-elf
builds from x86_64-pc-linux-gnu, and that gcc.c-torture/execute/memset-2.c
no longer causes "operand out of range" issues in gas.  Sorry again.


2023-04-25  Roger Sayle  <ro...@nextmovesoftware.com>

gcc/ChangeLog
        * config/stormy16/stormy16.md (zero_extendqihi2): Restore/fix
        length attribute for the first (memory operand) alternative.


Roger
--

diff --git a/gcc/config/stormy16/stormy16.md b/gcc/config/stormy16/stormy16.md
index fd52588..9d92492 100644
--- a/gcc/config/stormy16/stormy16.md
+++ b/gcc/config/stormy16/stormy16.md
@@ -286,7 +286,7 @@
    shl %0,#8 | shr %0,#8"
   [(set_attr "psw_operand" "nop,nop,0")
    (set_attr_alternative "length"
-            [(const_int 2)
+            [(const_int 4)
              (const_int 2)
              (const_int 4)])])
 

Reply via email to