aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDJ Delorie <dj@redhat.com>2014-01-20 23:30:45 -0500
committerDJ Delorie <dj@gcc.gnu.org>2014-01-20 23:30:45 -0500
commit84db09e3c260b7dfc0f652387e3aa28f04626e70 (patch)
tree639f8023da50dd3555d22f88280b7e27081f2048
parentd1a5b5e3725895a52432d1abb251ebd332f7a643 (diff)
downloadgcc-84db09e3c260b7dfc0f652387e3aa28f04626e70.zip
gcc-84db09e3c260b7dfc0f652387e3aa28f04626e70.tar.gz
gcc-84db09e3c260b7dfc0f652387e3aa28f04626e70.tar.bz2
rl78.c (rl78_propogate_register_origins): Verify that CLOBBERs are REGs before propogating their values.
* config/rl78/rl78.c (rl78_propogate_register_origins): Verify that CLOBBERs are REGs before propogating their values. From-SVN: r206867
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/rl78/rl78.c6
2 files changed, 9 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index a666d2e..45304e9 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2014-01-20 DJ Delorie <dj@redhat.com>
+
+ * config/rl78/rl78.c (rl78_propogate_register_origins): Verify
+ that CLOBBERs are REGs before propogating their values.
+
2014-01-20 H.J. Lu <hongjiu.lu@intel.com>
PR middle-end/59789
diff --git a/gcc/config/rl78/rl78.c b/gcc/config/rl78/rl78.c
index dd8fc55..227a39b 100644
--- a/gcc/config/rl78/rl78.c
+++ b/gcc/config/rl78/rl78.c
@@ -3426,7 +3426,8 @@ rl78_propogate_register_origins (void)
{
rtx clobber = XVECEXP (pat, 0, 1);
pat = XVECEXP (pat, 0, 0);
- if (GET_CODE (clobber) == CLOBBER)
+ if (GET_CODE (clobber) == CLOBBER
+ && GET_CODE (XEXP (clobber, 0)) == REG)
{
int cr = REGNO (XEXP (clobber, 0));
int mb = GET_MODE_SIZE (GET_MODE (XEXP (clobber, 0)));
@@ -3569,7 +3570,8 @@ rl78_propogate_register_origins (void)
}
}
}
- else if (GET_CODE (pat) == CLOBBER)
+ else if (GET_CODE (pat) == CLOBBER
+ && GET_CODE (XEXP (pat, 0)) == REG)
{
if (REG_P (XEXP (pat, 0)))
{