Commit 0423421f by Alan Modra Committed by Alan Modra

re PR target/16480 (using -msdata causes internal compiler error)

	PR target/16480
	* config/rs6000/rs6000.c (rs6000_split_multireg_move): Don't abort
	on "(mem (symbol_ref ..))" rtl.  Look at LO_SUM base regs as well
	as PLUS base regs.

From-SVN: r86598
parent 37d5a9a5
2004-08-26 Alan Modra <amodra@bigpond.net.au>
PR target/16480
* config/rs6000/rs6000.c (rs6000_split_multireg_move): Don't abort
on "(mem (symbol_ref ..))" rtl. Look at LO_SUM base regs as well
as PLUS base regs.
2005-08-28 Paul Brook <paul@codesourcery.com>
* config/arm/symbian.h (SUBTARGET_ASM_FLOAT_SPEC): Default to
......
......@@ -11352,18 +11352,14 @@ rs6000_split_multireg_move (rtx dst, rtx src)
src = newsrc;
}
/* We have now address involving an base register only.
If we use one of the registers to address memory,
we have change that register last. */
breg = (GET_CODE (XEXP (src, 0)) == PLUS
? XEXP (XEXP (src, 0), 0)
: XEXP (src, 0));
if (!REG_P (breg))
abort();
if (REGNO (breg) >= REGNO (dst)
breg = XEXP (src, 0);
if (GET_CODE (breg) == PLUS || GET_CODE (breg) == LO_SUM)
breg = XEXP (breg, 0);
/* If the base register we are using to address memory is
also a destination reg, then change that register last. */
if (REG_P (breg)
&& REGNO (breg) >= REGNO (dst)
&& REGNO (breg) < REGNO (dst) + nregs)
j = REGNO (breg) - REGNO (dst);
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment