X-Git-Url: https://git.rohieb.name/openwrt.git/blobdiff_plain/9693474f86e0b6aa6aa66f702042a3ba8535e7c8..cbe6c66638efddd36b0bb71f46dd5f5689a3e045:/toolchain/gcc/patches/4.2.4/900-avr32_support.patch?ds=sidebyside

diff --git a/toolchain/gcc/patches/4.2.4/900-avr32_support.patch b/toolchain/gcc/patches/4.2.4/900-avr32_support.patch
index 6ba8b7f74..164f5e33b 100644
--- a/toolchain/gcc/patches/4.2.4/900-avr32_support.patch
+++ b/toolchain/gcc/patches/4.2.4/900-avr32_support.patch
@@ -21943,145 +21943,6 @@
      {
        int save_tree_used;
  
---- a/gcc/genemit.c
-+++ b/gcc/genemit.c
-@@ -121,6 +121,24 @@ max_operand_vec (rtx insn, int arg)
- }
- 
- static void
-+gen_vararg_prologue(int operands)
-+{
-+  int i;
-+
-+  if (operands > 1)
-+    {
-+      for (i = 1; i < operands; i++)
-+	printf("  rtx operand%d ATTRIBUTE_UNUSED;\n", i);
-+
-+      printf("  va_list args;\n\n");
-+      printf("  va_start(args, operand0);\n");
-+      for (i = 1; i < operands; i++)
-+	printf("  operand%d = va_arg(args, rtx);\n", i);
-+      printf("  va_end(args);\n\n");
-+    }
-+}
-+
-+static void
- print_code (RTX_CODE code)
- {
-   const char *p1;
-@@ -405,18 +423,16 @@ gen_insn (rtx insn, int lineno)
-     fatal ("match_dup operand number has no match_operand");
- 
-   /* Output the function name and argument declarations.  */
--  printf ("rtx\ngen_%s (", XSTR (insn, 0));
-+  printf ("rtx\ngen_%s ", XSTR (insn, 0));
-+
-   if (operands)
--    for (i = 0; i < operands; i++)
--      if (i)
--	printf (",\n\trtx operand%d ATTRIBUTE_UNUSED", i);
--      else
--	printf ("rtx operand%d ATTRIBUTE_UNUSED", i);
-+    printf("(rtx operand0 ATTRIBUTE_UNUSED, ...)\n");
-   else
--    printf ("void");
--  printf (")\n");
-+    printf("(void)\n");
-   printf ("{\n");
- 
-+  gen_vararg_prologue(operands);
-+
-   /* Output code to construct and return the rtl for the instruction body.  */
- 
-   if (XVECLEN (insn, 1) == 1)
-@@ -456,16 +472,12 @@ gen_expand (rtx expand)
-   operands = max_operand_vec (expand, 1);
- 
-   /* Output the function name and argument declarations.  */
--  printf ("rtx\ngen_%s (", XSTR (expand, 0));
-+  printf ("rtx\ngen_%s ", XSTR (expand, 0));
-   if (operands)
--    for (i = 0; i < operands; i++)
--      if (i)
--	printf (",\n\trtx operand%d", i);
--      else
--	printf ("rtx operand%d", i);
-+    printf("(rtx operand0 ATTRIBUTE_UNUSED, ...)\n");
-   else
--    printf ("void");
--  printf (")\n");
-+    printf("(void)\n");
-+
-   printf ("{\n");
- 
-   /* If we don't have any C code to write, only one insn is being written,
-@@ -475,6 +487,8 @@ gen_expand (rtx expand)
-       && operands > max_dup_opno
-       && XVECLEN (expand, 1) == 1)
-     {
-+      gen_vararg_prologue(operands);
-+
-       printf ("  return ");
-       gen_exp (XVECEXP (expand, 1, 0), DEFINE_EXPAND, NULL);
-       printf (";\n}\n\n");
-@@ -488,6 +502,7 @@ gen_expand (rtx expand)
-   for (; i <= max_scratch_opno; i++)
-     printf ("  rtx operand%d ATTRIBUTE_UNUSED;\n", i);
-   printf ("  rtx _val = 0;\n");
-+  gen_vararg_prologue(operands);
-   printf ("  start_sequence ();\n");
- 
-   /* The fourth operand of DEFINE_EXPAND is some code to be executed
---- a/gcc/genflags.c
-+++ b/gcc/genflags.c
-@@ -127,7 +127,6 @@ static void
- gen_proto (rtx insn)
- {
-   int num = num_operands (insn);
--  int i;
-   const char *name = XSTR (insn, 0);
-   int truth = maybe_eval_c_test (XSTR (insn, 2));
- 
-@@ -158,12 +157,7 @@ gen_proto (rtx insn)
-   if (num == 0)
-     fputs ("void", stdout);
-   else
--    {
--      for (i = 1; i < num; i++)
--	fputs ("rtx, ", stdout);
--
--      fputs ("rtx", stdout);
--    }
-+    fputs("rtx, ...", stdout);
- 
-   puts (");");
- 
-@@ -173,12 +167,7 @@ gen_proto (rtx insn)
-     {
-       printf ("static inline rtx\ngen_%s", name);
-       if (num > 0)
--	{
--	  putchar ('(');
--	  for (i = 0; i < num-1; i++)
--	    printf ("rtx ARG_UNUSED (%c), ", 'a' + i);
--	  printf ("rtx ARG_UNUSED (%c))\n", 'a' + i);
--	}
-+	puts("(rtx ARG_UNUSED(a), ...)");
-       else
- 	puts ("(void)");
-       puts ("{\n  return 0;\n}");
---- a/gcc/genoutput.c
-+++ b/gcc/genoutput.c
-@@ -386,7 +386,7 @@ output_insn_data (void)
- 	}
- 
-       if (d->name && d->name[0] != '*')
--	printf ("    (insn_gen_fn) gen_%s,\n", d->name);
-+	printf ("    gen_%s,\n", d->name);
-       else
- 	printf ("    0,\n");
- 
 --- a/gcc/ifcvt.c
 +++ b/gcc/ifcvt.c
 @@ -77,7 +77,7 @@ static int num_possible_if_blocks;
@@ -22231,17 +22092,6 @@
  #if defined (__hppa) && W_TYPE_SIZE == 32
  #define add_ssaaaa(sh, sl, ah, al, bh, bl) \
    __asm__ ("add %4,%5,%1\n\taddc %2,%3,%0"				\
---- a/gcc/optabs.h
-+++ b/gcc/optabs.h
-@@ -431,7 +431,7 @@ extern enum insn_code reload_out_optab[N
- extern GTY(()) optab code_to_optab[NUM_RTX_CODE + 1];
- 
- 
--typedef rtx (*rtxfun) (rtx);
-+typedef rtx (*rtxfun) (rtx, ...);
- 
- /* Indexed by the rtx-code for a conditional (e.g. EQ, LT,...)
-    gives the gen_function to make a branch to test that condition.  */
 --- a/gcc/regrename.c
 +++ b/gcc/regrename.c
 @@ -1592,6 +1592,9 @@ copyprop_hardreg_forward_1 (basic_block 
@@ -22254,7 +22104,7 @@
    for (insn = BB_HEAD (bb); ; insn = NEXT_INSN (insn))
      {
        int n_ops, i, alt, predicated;
-@@ -1630,7 +1633,60 @@ copyprop_hardreg_forward_1 (basic_block 
+@@ -1630,7 +1633,62 @@ copyprop_hardreg_forward_1 (basic_block 
  	      || (predicated && recog_data.operand_type[i] == OP_OUT))
  	    recog_data.operand_type[i] = OP_INOUT;
  	}
@@ -22268,6 +22118,7 @@
 +         are modified these tests will fail.
 +      */
 +      
++#ifdef IFCVT_ALLOW_MODIFY_TEST_IN_INSN
 +      if ( IFCVT_ALLOW_MODIFY_TEST_IN_INSN
 +           && predicated )
 +        { 
@@ -22311,6 +22162,7 @@
 +        {
 +          prev_pred_insn_skipped = 0;
 +        }
++#endif /* IFCVT_ALLOW_MODIFY_TEST_IN_INSN */
 +      
        /* For each earlyclobber operand, zap the value data.  */
        for (i = 0; i < n_ops; i++)