From 3721f2603495ef947aacccf59ffd27dba1fa06c8 Mon Sep 17 00:00:00 2001
From: wilson <wilson@138bc75d-0d04-0410-961f-82ee72b054a4>
Date: Tue, 24 Dec 2002 15:49:24 +0000
Subject: [PATCH] Fix v850 PlumHall testsuite failure. 	* alias.c
 (record_set): Handle multi-reg hard registers.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@60474 138bc75d-0d04-0410-961f-82ee72b054a4
---
 gcc/ChangeLog |  4 ++++
 gcc/alias.c   | 17 +++++++++++++++++
 2 files changed, 21 insertions(+)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 388076dfa281..e23c31a95b26 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,7 @@
+2002-12-24  Jim Wilson  <wilson@redhat.com>
+
+	* alias.c (record_set): Handle multi-reg hard registers.
+
 2002-12-24  Kazu Hirata  <kazu@cs.umass.edu>
 
 	* regmove.c: Fix comment typos.
diff --git a/gcc/alias.c b/gcc/alias.c
index 12029f053cd1..fee64b1e50df 100644
--- a/gcc/alias.c
+++ b/gcc/alias.c
@@ -932,6 +932,7 @@ record_set (dest, set, data)
 {
   unsigned regno;
   rtx src;
+  int n;
 
   if (GET_CODE (dest) != REG)
     return;
@@ -941,6 +942,22 @@ record_set (dest, set, data)
   if (regno >= reg_base_value_size)
     abort ();
 
+  /* If this spans multiple hard registers, then we must indicate that every
+     register has an unusable value.  */
+  if (regno < FIRST_PSEUDO_REGISTER)
+    n = HARD_REGNO_NREGS (regno, GET_MODE (dest));
+  else
+    n = 1;
+  if (n != 1)
+    {
+      while (--n >= 0)
+	{
+	  reg_seen[regno + n] = 1;
+	  new_reg_base_value[regno + n] = 0;
+	}
+      return;
+    }
+
   if (set)
     {
       /* A CLOBBER wipes out any old value but does not prevent a previously
-- 
GitLab