Upstream-Status: Pending

From cb9b1c041b634a4c128896e3d3eed4082608c797 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Sat, 3 May 2014 19:25:17 -0700
Subject: [PATCH] Revert "2013-05-21  Christian Bruel 
 <christian.bruel@st.com>"

This reverts commit 3983036a8b6b2710c57777194f21507819a73553.

Signed-off-by: Khem Raj <raj.khem@gmail.com>

Conflicts:
	gcc/ChangeLog
---
 gcc/ChangeLog   | 219 +++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 gcc/dwarf2out.c |  33 +++++----
 2 files changed, 234 insertions(+), 18 deletions(-)

diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c
index 1272326..6ac2b28 100644
--- a/gcc/dwarf2out.c
+++ b/gcc/dwarf2out.c
@@ -10870,27 +10870,25 @@ static dw_loc_descr_ref
 multiple_reg_loc_descriptor (rtx rtl, rtx regs,
 			     enum var_init_status initialized)
 {
-  int size, i;
+  int nregs, size, i;
+  unsigned reg;
   dw_loc_descr_ref loc_result = NULL;
 
-  /* Simple, contiguous registers.  */
-  if (regs == NULL_RTX)
-    {
-      unsigned reg = REGNO (rtl);
-      int nregs;
-
+  reg = REGNO (rtl);
 #ifdef LEAF_REG_REMAP
-      if (crtl->uses_only_leaf_regs)
-	{
-	  int leaf_reg = LEAF_REG_REMAP (reg);
-	  if (leaf_reg != -1)
-	    reg = (unsigned) leaf_reg;
-	}
+  if (crtl->uses_only_leaf_regs)
+    {
+      int leaf_reg = LEAF_REG_REMAP (reg);
+      if (leaf_reg != -1)
+	reg = (unsigned) leaf_reg;
+    }
 #endif
+  gcc_assert ((unsigned) DBX_REGISTER_NUMBER (reg) == dbx_reg_number (rtl));
+  nregs = hard_regno_nregs[REGNO (rtl)][GET_MODE (rtl)];
 
-      gcc_assert ((unsigned) DBX_REGISTER_NUMBER (reg) == dbx_reg_number (rtl));
-      nregs = hard_regno_nregs[REGNO (rtl)][GET_MODE (rtl)];
-
+  /* Simple, contiguous registers.  */
+  if (regs == NULL_RTX)
+    {
       size = GET_MODE_SIZE (GET_MODE (rtl)) / nregs;
 
       loc_result = NULL;
@@ -10918,9 +10916,10 @@ multiple_reg_loc_descriptor (rtx rtl, rtx regs,
     {
       dw_loc_descr_ref t;
 
-      t = one_reg_loc_descriptor (dbx_reg_number (XVECEXP (regs, 0, i)),
+      t = one_reg_loc_descriptor (REGNO (XVECEXP (regs, 0, i)),
 				  VAR_INIT_STATUS_INITIALIZED);
       add_loc_descr (&loc_result, t);
+      size = GET_MODE_SIZE (GET_MODE (XVECEXP (regs, 0, 0)));
       add_loc_descr_op_piece (&loc_result, size);
     }
 
-- 
1.9.2

