aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStephane Carrez <Stephane.Carrez@worldnet.fr>2001-10-01 13:33:55 +0000
committerStephane Carrez <Stephane.Carrez@worldnet.fr>2001-10-01 13:33:55 +0000
commitcef40f6ee169993a571bfa6638f8d8dc065b21bf (patch)
tree754073a1a176494e6f0c6a907846045296640eb1
parentc8d11b802fda832d699f4bc1c90fe14df0d5ee50 (diff)
* config/m68hc11/m68hc11.md ("add-split"): Fix add split when
operand 2 is the stack pointer. ("addr-peephole"): Fix address computation peephole when operand 2 is the stack pointer. git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@45925 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/config/m68hc11/m68hc11.md14
2 files changed, 17 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index c546d5b3d57..8c22804e8a0 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+2001-10-01 Stephane Carrez <Stephane.Carrez@worldnet.fr>
+
+ * config/m68hc11/m68hc11.md ("add-split"): Fix add split when
+ operand 2 is the stack pointer.
+ ("addr-peephole"): Fix address computation peephole when operand 2
+ is the stack pointer.
+
Mon Oct 1 09:26:41 2001 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
* config/i386/i386.c (ix86_va_arg): Call set_mem_alias_set.
diff --git a/gcc/config/m68hc11/m68hc11.md b/gcc/config/m68hc11/m68hc11.md
index a5e178726e8..d978f960807 100644
--- a/gcc/config/m68hc11/m68hc11.md
+++ b/gcc/config/m68hc11/m68hc11.md
@@ -3657,8 +3657,9 @@
(set (match_dup 0) (reg:HI D_REGNUM))])]
"
/* Save the operand2 in a temporary location and use it. */
- if (H_REG_P (operands[2])
- || reg_mentioned_p (operands[0], operands[2]))
+ if ((H_REG_P (operands[2])
+ || reg_mentioned_p (operands[0], operands[2]))
+ && !(SP_REG_P (operands[2]) && GET_CODE (operands[3]) == PLUS))
{
operands[4] = gen_rtx (REG, HImode, SOFT_TMP_REGNUM);
operands[6] = operands[4];
@@ -6121,9 +6122,14 @@
{
int value_loaded = 1;
- if (X_REG_P (operands[0]))
+ if (X_REG_P (operands[0]) || SP_REG_P (operands[2]))
{
- output_asm_insn (\"ldx\\t%2\\n\\txgdx\", operands);
+ rtx ops[2];
+
+ ops[0] = operands[0];
+ ops[1] = operands[2];
+ m68hc11_gen_movhi (insn, ops);
+ output_asm_insn (\"xgd%0\", operands);
}
else if (Y_REG_P (operands[0]))
{