This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Commit: MSP430: Fix addsi splitter (PR 64160)


Hi Guys.

  I am applying the patch below to fix PR 64160 for the MSP430.

Cheers
  Nick

gcc/ChangeLog
2014-12-24  Nick Clifton  <nickc@redhat.com>

	PR target/64160
	* config/msp430/msp430.md (addsi splitter): Do not split when the
	destination partially overlaps the source.

Index: config/msp430/msp430.md
===================================================================
--- config/msp430/msp430.md	(revision 219057)
+++ config/msp430/msp430.md	(working copy)
@@ -402,14 +402,16 @@
    operands[6] = msp430_subreg (HImode, operands[0], SImode, 2);
    operands[7] = msp430_subreg (HImode, operands[1], SImode, 2);
    operands[8] = msp430_subreg (HImode, operands[2], SImode, 2);
+
+   /* BZ 64160: Do not use this splitter when the dest partially overlaps the source.  */
+   if (reg_overlap_mentioned_p (operands[3], operands[7])
+       || reg_overlap_mentioned_p (operands[3], operands[8]))
+      FAIL;
+
    if (GET_CODE (operands[5]) == CONST_INT)
-     {
-       operands[9] = GEN_INT (INTVAL (operands[5]) & 0xffff);
-     }
+     operands[9] = GEN_INT (INTVAL (operands[5]) & 0xffff);
    else
-     {
-       operands[9] = gen_rtx_ZERO_EXTEND (SImode, operands[5]);
-     }
+     operands[9] = gen_rtx_ZERO_EXTEND (SImode, operands[5]);
    "
   )
 


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]