Patchwork RFA: Fix mn10300 --enable-werror-always build

login
register
mail settings
Submitter Joern Rennecke
Date Nov. 9, 2010, 4:55 p.m.
Message ID <20101109115546.b4bxc52cy88www04-nzlynne@webmail.spamcop.net>
Download mbox | patch
Permalink /patch/70563/
State New
Headers show

Comments

Joern Rennecke - Nov. 9, 2010, 4:55 p.m.
Built on i686-pc-linux-gnu with gcc (GCC) 4.6.0 20101103 (experimental).
2010-11-09  Joern Rennecke  <amylaar@spamcop.net>

	PR target/44759
	* config/mn10300/mn10300.c (SIZE_FMOV_LIMIT): Promote all arms of
	conditional to type of S.
	(mn10300_function_arg): Remove unused variable align.
	(mn10300_arg_partial_bytes): Likewise.
	* config/mn10300/mn10300.md (attribute cpu): Cast value to
	enum attr_cpu.
Jeff Law - Nov. 9, 2010, 5:01 p.m.
On 11/09/10 09:55, Joern Rennecke wrote:
> Built on i686-pc-linux-gnu with gcc (GCC) 4.6.0 20101103 (experimental).
OK
jeff

Patch

Index: config/mn10300/mn10300.c
===================================================================
--- config/mn10300/mn10300.c	(revision 166491)
+++ config/mn10300/mn10300.c	(working copy)
@@ -735,11 +735,14 @@  mn10300_expand_prologue (void)
 			: (((S) >= (1 << 7)) || ((S) < -(1 << 7))) ? 4 : 2)
 #define SIZE_ADD_SP(S) ((((S) >= (1 << 15)) || ((S) < -(1 << 15))) ? 6 \
 			: (((S) >= (1 << 7)) || ((S) < -(1 << 7))) ? 4 : 3)
+
+/* We add 0 * (S) in two places to promote to the type of S,
+   so that all arms of the conditional have the same type.  */
 #define SIZE_FMOV_LIMIT(S,N,L,SIZE1,SIZE2,ELSE) \
-  (((S) >= (L)) ? (SIZE1) * (N) \
+  (((S) >= (L)) ? 0 * (S) + (SIZE1) * (N) \
    : ((S) + 4 * (N) >= (L)) ? (((L) - (S)) / 4 * (SIZE2) \
 			       + ((S) + 4 * (N) - (L)) / 4 * (SIZE1)) \
-   : (ELSE))
+   : 0 * (S) + (ELSE))
 #define SIZE_FMOV_SP_(S,N) \
   (SIZE_FMOV_LIMIT ((S), (N), (1 << 24), 7, 6, \
                    SIZE_FMOV_LIMIT ((S), (N), (1 << 8), 6, 4, \
@@ -1459,7 +1462,7 @@  mn10300_function_arg (CUMULATIVE_ARGS *c
 		      const_tree type, bool named ATTRIBUTE_UNUSED)
 {
   rtx result = NULL_RTX;
-  int size, align;
+  int size;
 
   /* We only support using 2 data registers as argument registers.  */
   int nregs = 2;
@@ -1470,9 +1473,6 @@  mn10300_function_arg (CUMULATIVE_ARGS *c
   else
     size = GET_MODE_SIZE (mode);
 
-  /* Figure out the alignment of the object to be passed.  */
-  align = size;
-
   cum->nbytes = (cum->nbytes + 3) & ~3;
 
   /* Don't pass this arg via a register if all the argument registers
@@ -1521,7 +1521,7 @@  static int
 mn10300_arg_partial_bytes (CUMULATIVE_ARGS *cum, enum machine_mode mode,
 			   tree type, bool named ATTRIBUTE_UNUSED)
 {
-  int size, align;
+  int size;
 
   /* We only support using 2 data registers as argument registers.  */
   int nregs = 2;
@@ -1532,9 +1532,6 @@  mn10300_arg_partial_bytes (CUMULATIVE_AR
   else
     size = GET_MODE_SIZE (mode);
 
-  /* Figure out the alignment of the object to be passed.  */
-  align = size;
-
   cum->nbytes = (cum->nbytes + 3) & ~3;
 
   /* Don't pass this arg via a register if all the argument registers
Index: config/mn10300/mn10300.md
===================================================================
--- config/mn10300/mn10300.md	(revision 166491)
+++ config/mn10300/mn10300.md	(working copy)
@@ -44,7 +44,7 @@  (define_constants [
 ;; Processor type.  This attribute must exactly match the processor_type
 ;; enumeration in mn10300.h.
 (define_attr "cpu" "mn10300,am33,am33_2,am34"
-  (const (symbol_ref "mn10300_tune_cpu")))
+  (const (symbol_ref "(enum attr_cpu) mn10300_tune_cpu")))
 
 
 ;; Pipeline description.