From: Richard Kenner Date: Thu, 28 Sep 1995 18:04:29 +0000 (-0400) Subject: (output_scc_di): Swap operands when needed. X-Git-Tag: misc/cutover-egcs-0~3556 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=d9832fd253ac2556b41919567daba72470f4043a;p=thirdparty%2Fgcc.git (output_scc_di): Swap operands when needed. From-SVN: r10408 --- diff --git a/gcc/config/m68k/m68k.c b/gcc/config/m68k/m68k.c index 19897a90cc3f..2b5b392bb86b 100644 --- a/gcc/config/m68k/m68k.c +++ b/gcc/config/m68k/m68k.c @@ -706,7 +706,19 @@ output_scc_di(op, operand1, operand2, dest) rtx dest; { rtx loperands[7]; + enum rtx_code op_code = GET_CODE (op); + /* The m68k cmp.l instruction requires operand1 to be a reg as used + below. Swap the operands and change the op if these requirements + are not fulfilled. */ + if (GET_CODE (operand2) == REG && GET_CODE (operand1) != REG) + { + rtx tmp = operand1; + + operand1 = operand2; + operand2 = tmp; + op_code = swap_condition (op_code); + } loperands[0] = operand1; if (GET_CODE (operand1) == REG) loperands[1] = gen_rtx (REG, SImode, REGNO (operand1) + 1); @@ -743,7 +755,7 @@ output_scc_di(op, operand1, operand2, dest) #endif loperands[5] = dest; - switch (GET_CODE (op)) + switch (op_code) { case EQ: ASM_OUTPUT_INTERNAL_LABEL (asm_out_file, "L",