From caa6ec8dc54d2661eb3e7557a4f555867190d63b Mon Sep 17 00:00:00 2001 From: Jan Hubicka Date: Thu, 25 Nov 1999 13:53:44 +0100 Subject: reg-stack.c (subst_stack_regs_pat): Swap operands in commutative operations when needed. * reg-stack.c (subst_stack_regs_pat): Swap operands in commutative operations when needed. * i386.md (fop_?f_comm): New. (fop_?f_1): Do not accept commutative operands. From-SVN: r30664 --- gcc/reg-stack.c | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'gcc/reg-stack.c') diff --git a/gcc/reg-stack.c b/gcc/reg-stack.c index 98b8778..aa2b010 100644 --- a/gcc/reg-stack.c +++ b/gcc/reg-stack.c @@ -1631,6 +1631,16 @@ subst_stack_regs_pat (insn, regstack, pat) SET_HARD_REG_BIT (regstack->reg_set, REGNO (*dest)); replace_reg (dest, get_hard_regnum (regstack, *dest)); } + + /* Keep operand 1 maching with destination. */ + if (GET_RTX_CLASS (GET_CODE (pat_src)) == 'c' + && REG_P (*src1) && REG_P (*src2) + && REGNO (*src1) != REGNO (*dest)) + { + rtx tmp = *src1; + *src1 = *src2; + *src2 = tmp; + } break; case UNSPEC: -- cgit v1.1