Patchwork sparc build broken...

login
register
mail settings
Submitter David Miller
Date June 2, 2012, 9:52 p.m.
Message ID <20120602.175221.1361670961044731053.davem@davemloft.net>
Download mbox | patch
Permalink /patch/162453/
State New
Headers show

Comments

David Miller - June 2, 2012, 9:52 p.m.
From: David Miller <davem@davemloft.net>
Date: Fri, 01 Jun 2012 13:50:48 -0400 (EDT)

> I hit the same problem, but solved it by removing the
> 'from' parameter entirely.

To move things forward I committed the following:

--------------------
Restore Sparc build.

gcc/

	* config/sparc/sparc.h (INITIAL_ELIMINATION_OFFSET): Split out to
	new function sparc_initial_elimination_offset.
	* config/sparc/sparc.c (sparc_initial_elimination_offset): New
	function.
	* config/sparc/sparc-protos.h (sparc_initial_elimination_offset):
	Prototype it.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@188142 138bc75d-0d04-0410-961f-82ee72b054a4
---
 gcc/ChangeLog                   |    9 +++++++++
 gcc/config/sparc/sparc-protos.h |    1 +
 gcc/config/sparc/sparc.c        |   17 +++++++++++++++++
 gcc/config/sparc/sparc.h        |   15 ++++++---------
 4 files changed, 33 insertions(+), 9 deletions(-)

Patch

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 5a43bb7..2eb5720 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,12 @@ 
+2012-06-02  Steven Bosscher  <steven@gcc.gnu.org>
+
+	* config/sparc/sparc.h (INITIAL_ELIMINATION_OFFSET): Split out to
+	new function sparc_initial_elimination_offset.
+	* config/sparc/sparc.c (sparc_initial_elimination_offset): New
+	function.
+	* config/sparc/sparc-protos.h (sparc_initial_elimination_offset):
+	Prototype it.
+
 2012-06-2  Kenneth Zadeck <zadeck@naturalbridge.com>
 
 	* expmed.c (expand_mult, choose_multiplier): Change "2 *
diff --git a/gcc/config/sparc/sparc-protos.h b/gcc/config/sparc/sparc-protos.h
index 52acc09..b03f5cc 100644
--- a/gcc/config/sparc/sparc-protos.h
+++ b/gcc/config/sparc/sparc-protos.h
@@ -37,6 +37,7 @@  extern enum direction function_arg_padding (enum machine_mode, const_tree);
 
 extern void order_regs_for_local_alloc (void);
 extern HOST_WIDE_INT sparc_compute_frame_size (HOST_WIDE_INT, int);
+extern int sparc_initial_elimination_offset (int);
 extern void sparc_expand_prologue (void);
 extern void sparc_flat_expand_prologue (void);
 extern void sparc_expand_epilogue (bool);
diff --git a/gcc/config/sparc/sparc.c b/gcc/config/sparc/sparc.c
index 54fce8f..7b1899d 100644
--- a/gcc/config/sparc/sparc.c
+++ b/gcc/config/sparc/sparc.c
@@ -4551,6 +4551,23 @@  sparc_compute_frame_size (HOST_WIDE_INT size, int leaf_function)
   return frame_size;
 }
 
+/* Implement the macro INITIAL_ELIMINATION_OFFSET, return the OFFSET.  */
+
+int
+sparc_initial_elimination_offset (int to)
+{
+  int offset;
+
+  if (to == STACK_POINTER_REGNUM)
+    offset = sparc_compute_frame_size (get_frame_size (),
+				       current_function_is_leaf);
+  else
+    offset = 0;
+
+  offset += SPARC_STACK_BIAS;
+  return offset;
+}
+
 /* Output any necessary .register pseudo-ops.  */
 
 void
diff --git a/gcc/config/sparc/sparc.h b/gcc/config/sparc/sparc.h
index a2bf09f..234edcf 100644
--- a/gcc/config/sparc/sparc.h
+++ b/gcc/config/sparc/sparc.h
@@ -1104,15 +1104,12 @@  extern char leaf_reg_remap[];
   {{ FRAME_POINTER_REGNUM, STACK_POINTER_REGNUM}, \
    { FRAME_POINTER_REGNUM, HARD_FRAME_POINTER_REGNUM} }
 
-#define INITIAL_ELIMINATION_OFFSET(FROM, TO, OFFSET) 			\
-  do {									\
-    if ((TO) == STACK_POINTER_REGNUM)					\
-      (OFFSET) = sparc_compute_frame_size (get_frame_size (),		\
-					   current_function_is_leaf);	\
-    else								\
-      (OFFSET) = 0;							\
-    (OFFSET) += SPARC_STACK_BIAS;					\
-  } while (0)
+#define INITIAL_ELIMINATION_OFFSET(FROM, TO, OFFSET) 		\
+  do								\
+    {								\
+      (OFFSET) = sparc_initial_elimination_offset ((TO));	\
+    }								\
+  while (0)
 
 /* Keep the stack pointer constant throughout the function.
    This is both an optimization and a necessity: longjmp