Commit e101e12e by Andreas Krebbel Committed by Andreas Krebbel

s390.c (s390_delegitimize_address): Handle GOTOFF unspecs.

2011-03-18  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>

	* config/s390/s390.c (s390_delegitimize_address): Handle GOTOFF
	unspecs.

From-SVN: r171157
parent 4627c7fb
2011-03-18 Andreas Krebbel <Andreas.Krebbel@de.ibm.com> 2011-03-18 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
* config/s390/s390.c (s390_delegitimize_address): Handle GOTOFF
unspecs.
2011-03-18 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
* config/s390/s390.c (s390_chunkify_start): Prevent literal pool * config/s390/s390.c (s390_chunkify_start): Prevent literal pool
splitting between a call and its corresponding CALL_ARG_LOCATION splitting between a call and its corresponding CALL_ARG_LOCATION
note. note.
......
...@@ -5015,6 +5015,23 @@ s390_delegitimize_address (rtx orig_x) ...@@ -5015,6 +5015,23 @@ s390_delegitimize_address (rtx orig_x)
orig_x = delegitimize_mem_from_attrs (orig_x); orig_x = delegitimize_mem_from_attrs (orig_x);
x = orig_x; x = orig_x;
/* Extract the symbol ref from:
(plus:SI (reg:SI 12 %r12)
(const:SI (unspec:SI [(symbol_ref/f:SI ("*.LC0"))]
UNSPEC_GOTOFF))) */
if (GET_CODE (x) == PLUS
&& REG_P (XEXP (x, 0))
&& REGNO (XEXP (x, 0)) == PIC_OFFSET_TABLE_REGNUM
&& GET_CODE (XEXP (x, 1)) == CONST)
{
/* The const operand. */
y = XEXP (XEXP (x, 1), 0);
if (GET_CODE (y) == UNSPEC
&& XINT (y, 1) == UNSPEC_GOTOFF)
return XVECEXP (y, 0, 0);
}
if (GET_CODE (x) != MEM) if (GET_CODE (x) != MEM)
return orig_x; return orig_x;
......
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