sh.c (sh_delegitimize_address): Handle UNSPEC_SYMOFF and UNSPEC_PCREL_SYMOFF.

* config/sh/sh.c (sh_delegitimize_address): Handle UNSPEC_SYMOFF
	and UNSPEC_PCREL_SYMOFF.

From-SVN: r171134
This commit is contained in:
Kaz Kojima 2011-03-18 12:19:50 +00:00
parent 294eab8c10
commit 2efd0aa69c
2 changed files with 19 additions and 2 deletions

View File

@ -1,3 +1,8 @@
2011-03-18 Kaz Kojima <kkojima@gcc.gnu.org>
* config/sh/sh.c (sh_delegitimize_address): Handle UNSPEC_SYMOFF
and UNSPEC_PCREL_SYMOFF.
2011-03-18 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
* config/s390/s390.md: Use define_c_enum for the unspec constant

View File

@ -1,6 +1,6 @@
/* Output routines for GCC for Renesas / SuperH SH.
Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
Free Software Foundation, Inc.
Contributed by Steve Chamberlain (sac@cygnus.com).
Improved by Jim Wilson (wilson@cygnus.com).
@ -10019,8 +10019,20 @@ sh_delegitimize_address (rtx orig_x)
if (GET_CODE (y) == UNSPEC)
{
if (XINT (y, 1) == UNSPEC_GOT
|| XINT (y, 1) == UNSPEC_GOTOFF)
|| XINT (y, 1) == UNSPEC_GOTOFF
|| XINT (y, 1) == UNSPEC_SYMOFF)
return XVECEXP (y, 0, 0);
else if (XINT (y, 1) == UNSPEC_PCREL_SYMOFF)
{
if (GET_CODE (XVECEXP (y, 0, 0)) == CONST)
{
rtx symplt = XEXP (XVECEXP (y, 0, 0), 0);
if (GET_CODE (symplt) == UNSPEC
&& XINT (symplt, 1) == UNSPEC_PLT)
return XVECEXP (symplt, 0, 0);
}
}
else if (TARGET_SHMEDIA
&& (XINT (y, 1) == UNSPEC_EXTRACT_S16
|| XINT (y, 1) == UNSPEC_EXTRACT_U16))