aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/m32c/m32c.c
diff options
context:
space:
mode:
authorDJ Delorie <dj@redhat.com>2005-08-15 20:31:39 -0400
committerDJ Delorie <dj@gcc.gnu.org>2005-08-15 20:31:39 -0400
commiteb5f0c07fccb756cbafb0ceaffa8e0527e20d674 (patch)
tree0f77842fd2ddbb172f87629271e74e13bc213815 /gcc/config/m32c/m32c.c
parent7f91299bb493e4ab4d0692964adf94c590483cdc (diff)
downloadgcc-eb5f0c07fccb756cbafb0ceaffa8e0527e20d674.zip
gcc-eb5f0c07fccb756cbafb0ceaffa8e0527e20d674.tar.gz
gcc-eb5f0c07fccb756cbafb0ceaffa8e0527e20d674.tar.bz2
mov.md (movqi_op): Immediates can't be moved to the stack.
* config/m32c/mov.md (movqi_op): Immediates can't be moved to the stack. (movsi_splittable): Allow, but split, moves to the stack. * config/m32c/m32c.c (m32c_split_move): Always split moves to the stack. From-SVN: r103140
Diffstat (limited to 'gcc/config/m32c/m32c.c')
-rw-r--r--gcc/config/m32c/m32c.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/gcc/config/m32c/m32c.c b/gcc/config/m32c/m32c.c
index a04d829..f44f627 100644
--- a/gcc/config/m32c/m32c.c
+++ b/gcc/config/m32c/m32c.c
@@ -2663,6 +2663,13 @@ m32c_split_move (rtx * operands, enum machine_mode mode, int split_all)
debug_rtx (operands[1]);
#endif
+ /* Note that split_all is not used to select the api after this
+ point, so it's safe to set it to 3 even with define_insn. */
+ /* None of the chips can move SI operands to sp-relative addresses,
+ so we always split those. */
+ if (m32c_extra_constraint_p (operands[0], 'S', "Ss"))
+ split_all = 3;
+
/* We don't need to split these. */
if (TARGET_A24
&& split_all != 3