packages: crossavr-gcc/crossavr-gcc-bug-11259-v3.patch, crossavr-gcc/crossa...

kosmo kosmo at pld-linux.org
Thu Oct 7 19:25:12 CEST 2010


Author: kosmo                        Date: Thu Oct  7 17:25:12 2010 GMT
Module: packages                      Tag: HEAD
---- Log message:
- updated to 4.3.5
- patches synchronized with FreeBSD ports (includes recent changes from WinAVR project)

---- Files affected:
packages/crossavr-gcc:
   crossavr-gcc-bug-11259-v3.patch (1.1 -> 1.2) , crossavr-gcc-bug-35013.patch (1.1 -> 1.2) , crossavr-gcc-builtins-v6.patch (1.1 -> 1.2) , crossavr-gcc-libiberty-Makefile.in.patch (1.1 -> 1.2) , crossavr-gcc-osmain.patch (1.1 -> 1.2) , crossavr-gcc.spec (1.35 -> 1.36) , crossavr-gcc-bug-18145.patch (NONE -> 1.1)  (NEW), crossavr-gcc-bug-19636-24894-31644-31786.patch (NONE -> 1.1)  (NEW), crossavr-gcc-bug-34210-35508.patch (NONE -> 1.1)  (NEW), crossavr-gcc-libgcc.patch (NONE -> 1.1)  (NEW), crossavr-gcc-new-devices.patch (NONE -> 1.1)  (NEW), crossavr-gcc-param-inline-call-cost.patch (NONE -> 1.1)  (NEW), crossavr-gcc-xmega.patch (NONE -> 1.1)  (NEW), crossavr-gcc-attribute_alias.patch (1.1 -> NONE)  (REMOVED), crossavr-gcc-bug-spill-v4.patch (1.1 -> NONE)  (REMOVED), crossavr-gcc-dwarf.patch (1.1 -> NONE)  (REMOVED), crossavr-gcc-xmega-v9.patch (1.1 -> NONE)  (REMOVED), crossavr-gcc-xmega2.patch (1.1 -> NONE)  (REMOVED)

---- Diffs:

================================================================
Index: packages/crossavr-gcc/crossavr-gcc-bug-11259-v3.patch
diff -u packages/crossavr-gcc/crossavr-gcc-bug-11259-v3.patch:1.1 packages/crossavr-gcc/crossavr-gcc-bug-11259-v3.patch:1.2
--- packages/crossavr-gcc/crossavr-gcc-bug-11259-v3.patch:1.1	Sun Apr  5 14:01:24 2009
+++ packages/crossavr-gcc/crossavr-gcc-bug-11259-v3.patch	Thu Oct  7 19:25:07 2010
@@ -1,16 +1,7 @@
-Index: gcc/config/avr/avr.md
-===================================================================
---- gcc/config/avr/avr.md	(revision 129892)
-+++ gcc/config/avr/avr.md	(working copy)
-@@ -45,21 +45,22 @@
-    (REG_SP	32)
-    (TMP_REGNO	0)	; temporary register r0
-    (ZERO_REGNO	1)	; zero register r1
-    
-    (SREG_ADDR   0x5F)
-    (RAMPZ_ADDR  0x5B)
-    
-    (UNSPEC_STRLEN	0)
+diff -ur ../gcc-4.3.4.orig/gcc/config/avr/avr.md ./gcc/config/avr/avr.md
+--- ../gcc-4.3.4.orig/gcc/config/avr/avr.md	2009-10-02 15:08:58.000000000 +0200
++++ ./gcc/config/avr/avr.md	2009-10-02 15:09:26.000000000 +0200
+@@ -54,6 +54,7 @@
     (UNSPEC_INDEX_JMP	1)
     (UNSPEC_SEI		2)
     (UNSPEC_CLI		3)
@@ -18,23 +9,9 @@
  
     (UNSPECV_PROLOGUE_SAVES	0)
     (UNSPECV_EPILOGUE_RESTORES	1)])
- 
- (include "predicates.md")
- (include "constraints.md")
-   
- ;; Condition code settings.
- (define_attr "cc" "none,set_czn,set_zn,set_n,compare,clobber"
-   (const_string "none"))
-@@ -1185,20 +1186,33 @@
-       return (AS2 (andi, %A0,lo8(%2))  CR_TAB
-               AS2 (andi, %B0,hi8(%2)) CR_TAB
- 	      AS2 (andi, %C0,hlo8(%2)) CR_TAB
- 	      AS2 (andi, %D0,hhi8(%2)));
-     }
-   return \"bug\";
- }"
+@@ -1183,6 +1184,19 @@
    [(set_attr "length" "4,4")
-    (set_attr "cc" "set_n,set_n")])
+    (set_attr "cc" "set_n,clobber")])
  
 +(define_peephole2 ; andi
 +  [(set (match_operand:QI 0 "d_register_operand" "")
@@ -52,21 +29,7 @@
  ;;|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
  ;; ior
  
- (define_insn "iorqi3"
-   [(set (match_operand:QI 0 "register_operand" "=r,d")
-         (ior:QI (match_operand:QI 1 "register_operand" "%0,0")
-                 (match_operand:QI 2 "nonmemory_operand" "r,i")))]
-   ""
-   "@
- 	or %0,%2
-@@ -1313,24 +1327,71 @@
-         (xor:SI (match_operand:SI 1 "register_operand" "%0")
-                 (match_operand:SI 2 "register_operand" "r")))]
-   ""
-   "eor %0,%2
- 	eor %B0,%B2
- 	eor %C0,%C2
- 	eor %D0,%D2"
+@@ -1311,10 +1325,57 @@
    [(set_attr "length" "4")
     (set_attr "cc" "set_n")])
  
@@ -125,21 +88,7 @@
    [(set (match_operand:QI 0 "register_operand"           "=r,r,r,r,!d,r,r")
  	(ashift:QI (match_operand:QI 1 "register_operand" "0,0,0,0,0,0,0")
  		   (match_operand:QI 2 "general_operand"  "r,L,P,K,n,n,Qm")))]
-   ""
-   "* return ashlqi3_out (insn, operands, NULL);"
-   [(set_attr "length" "5,0,1,2,4,6,9")
-    (set_attr "cc" "clobber,none,set_czn,set_czn,set_czn,set_czn,clobber")])
- 
- (define_insn "ashlhi3"
-   [(set (match_operand:HI 0 "register_operand"           "=r,r,r,r,r,r,r")
-@@ -1346,20 +1407,61 @@
- 	(ashift:SI (match_operand:SI 1 "register_operand" "0,0,0,r,0,0,0")
- 		   (match_operand:QI 2 "general_operand"  "r,L,P,O,K,n,Qm")))]
-   ""
-   "* return ashlsi3_out (insn, operands, NULL);"
-   [(set_attr "length" "8,0,4,4,8,10,12")
-    (set_attr "cc" "clobber,none,set_n,clobber,set_n,clobber,clobber")])
- 
+@@ -1344,6 +1405,47 @@
  ;; Optimize if a scratch register from LD_REGS happens to be available.
  
  (define_peephole2
@@ -187,21 +136,7 @@
    [(match_scratch:QI 3 "d")
     (set (match_operand:HI 0 "register_operand" "")
  	(ashift:HI (match_operand:HI 1 "register_operand" "")
- 		   (match_operand:QI 2 "const_int_operand" "")))]
-   ""
-   [(parallel [(set (match_dup 0) (ashift:HI (match_dup 1) (match_dup 2)))
- 	      (clobber (match_dup 3))])]
-   "if (!avr_peep2_scratch_safe (operands[3]))
-      FAIL;")
- 
-@@ -1464,21 +1566,63 @@
- 		     (match_operand:QI 2 "const_int_operand" "L,P,O,n")))
-    (clobber (match_scratch:QI 3 "=X,X,X,&d"))]
-   "reload_completed"
-   "* return ashrsi3_out (insn, operands, NULL);"
-   [(set_attr "length" "0,4,4,10")
-    (set_attr "cc" "none,clobber,set_n,clobber")])
- 
+@@ -1462,7 +1564,49 @@
  ;; >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >>
  ;; logical shift right
  
@@ -252,21 +187,7 @@
    [(set (match_operand:QI 0 "register_operand"             "=r,r,r,r,!d,r,r")
  	(lshiftrt:QI (match_operand:QI 1 "register_operand" "0,0,0,0,0,0,0")
  		     (match_operand:QI 2 "general_operand"  "r,L,P,K,n,n,Qm")))]
-   ""
-   "* return lshrqi3_out (insn, operands, NULL);"
-   [(set_attr "length" "5,0,1,2,4,6,9")
-    (set_attr "cc" "clobber,none,set_czn,set_czn,set_czn,set_czn,clobber")])
- 
- (define_insn "lshrhi3"
-   [(set (match_operand:HI 0 "register_operand"             "=r,r,r,r,r,r,r")
-@@ -1494,20 +1638,61 @@
- 	(lshiftrt:SI (match_operand:SI 1 "register_operand" "0,0,0,r,0,0,0")
- 		     (match_operand:QI 2 "general_operand"  "r,L,P,O,K,n,Qm")))]
-   ""
-   "* return lshrsi3_out (insn, operands, NULL);"
-   [(set_attr "length" "8,0,4,4,8,10,12")
-    (set_attr "cc" "clobber,none,clobber,clobber,clobber,clobber,clobber")])
- 
+@@ -1492,6 +1636,47 @@
  ;; Optimize if a scratch register from LD_REGS happens to be available.
  
  (define_peephole2
@@ -314,10 +235,4 @@
    [(match_scratch:QI 3 "d")
     (set (match_operand:HI 0 "register_operand" "")
  	(lshiftrt:HI (match_operand:HI 1 "register_operand" "")
- 		     (match_operand:QI 2 "const_int_operand" "")))]
-   ""
-   [(parallel [(set (match_dup 0) (lshiftrt:HI (match_dup 1) (match_dup 2)))
- 	      (clobber (match_dup 3))])]
-   "if (!avr_peep2_scratch_safe (operands[3]))
-      FAIL;")
- 
+Only in ./gcc/config/avr: avr.md.orig

================================================================
Index: packages/crossavr-gcc/crossavr-gcc-bug-35013.patch
diff -u packages/crossavr-gcc/crossavr-gcc-bug-35013.patch:1.1 packages/crossavr-gcc/crossavr-gcc-bug-35013.patch:1.2
--- packages/crossavr-gcc/crossavr-gcc-bug-35013.patch:1.1	Sun Apr  5 14:01:25 2009
+++ packages/crossavr-gcc/crossavr-gcc-bug-35013.patch	Thu Oct  7 19:25:07 2010
@@ -1,10 +1,6 @@
-Patch to fix GCC bug #35013.
-
-Index: avr-protos.h
-===================================================================
---- gcc/config/avr/avr-protos.h	(revision 132369)
-+++ gcc/config/avr/avr-protos.h	(working copy)
-@@ -111,6 +111,7 @@
+--- ./gcc/config/avr/avr-protos.h.orig	2010-03-05 15:20:53.000000000 +0100
++++ ./gcc/config/avr/avr-protos.h	2010-03-05 15:24:52.000000000 +0100
+@@ -114,6 +114,7 @@
  extern int _reg_unused_after (rtx insn, rtx reg);
  extern int avr_jump_mode (rtx x, rtx insn);
  extern int byte_immediate_operand (rtx op, enum machine_mode mode);
@@ -12,11 +8,9 @@
  extern int test_hard_reg_class (enum reg_class class, rtx x);
  extern int jump_over_one_insn_p (rtx insn, rtx dest);
  
-Index: avr.c
-===================================================================
---- gcc/config/avr/avr.c	(revision 132366)
-+++ gcc/config/avr/avr.c	(working copy)
-@@ -1116,8 +1116,7 @@
+--- ./gcc/config/avr/avr.c.orig	2010-03-05 15:22:53.000000000 +0100
++++ ./gcc/config/avr/avr.c	2010-03-05 15:24:52.000000000 +0100
+@@ -1136,8 +1136,7 @@
  
      default:
        if (CONSTANT_ADDRESS_P (addr)
@@ -24,9 +18,9 @@
 -	      || GET_CODE (addr) == LABEL_REF))
 +	  && text_segment_operand (addr, VOIDmode))
  	{
- 	  fprintf (file, "pm(");
+ 	  fprintf (file, "gs(");
  	  output_addr_const (file,addr);
-@@ -1428,6 +1427,26 @@
+@@ -1453,6 +1452,26 @@
            && INTVAL (op) <= 0xff && INTVAL (op) >= 0);
  }
  
@@ -53,7 +47,7 @@
  /* Output all insn addresses and their sizes into the assembly language
     output file.  This is helpful for debugging whether the length attributes
     in the md file are correct.
-@@ -4465,8 +4484,7 @@
+@@ -4490,8 +4509,7 @@
  avr_assemble_integer (rtx x, unsigned int size, int aligned_p)
  {
    if (size == POINTER_SIZE / BITS_PER_UNIT && aligned_p
@@ -61,5 +55,5 @@
 -	  || GET_CODE (x) == LABEL_REF))
 +      && text_segment_operand (x, VOIDmode) )
      {
-       fputs ("\t.word\tpm(", asm_out_file);
+       fputs ("\t.word\tgs(", asm_out_file);
        output_addr_const (asm_out_file, x);

================================================================
Index: packages/crossavr-gcc/crossavr-gcc-builtins-v6.patch
diff -u packages/crossavr-gcc/crossavr-gcc-builtins-v6.patch:1.1 packages/crossavr-gcc/crossavr-gcc-builtins-v6.patch:1.2
--- packages/crossavr-gcc/crossavr-gcc-builtins-v6.patch:1.1	Sun Apr  5 14:01:25 2009
+++ packages/crossavr-gcc/crossavr-gcc-builtins-v6.patch	Thu Oct  7 19:25:07 2010
@@ -1,7 +1,5 @@
-Index: gcc/config/avr/predicates.md
-===================================================================
---- gcc/config/avr/predicates.md	(revision 134489)
-+++ gcc/config/avr/predicates.md	(working copy)
+--- ./gcc/config/avr/predicates.md.orig	2007-08-02 12:49:31.000000000 +0200
++++ ./gcc/config/avr/predicates.md	2010-03-05 15:25:53.000000000 +0100
 @@ -27,6 +27,11 @@
    (and (match_code "reg")
         (match_test "REGNO (op) >= 16 && REGNO (op) <= 31")))
@@ -14,9 +12,9 @@
  (define_predicate "even_register_operand"
    (and (match_code "reg")
         (and (match_test "REGNO (op) <= 31")
---- gcc/config/avr/avr.md.orig	2008-12-02 12:44:25.418762100 -0700
-+++ gcc/config/avr/avr.md	2008-12-02 15:31:40.788948300 -0700
-@@ -49,12 +49,26 @@
+--- ./gcc/config/avr/avr.md.orig	2010-03-05 15:20:25.000000000 +0100
++++ ./gcc/config/avr/avr.md	2010-03-05 15:25:53.000000000 +0100
+@@ -52,12 +52,26 @@
     
     (UNSPEC_STRLEN	0)
     (UNSPEC_INDEX_JMP	1)
@@ -48,7 +46,7 @@
  
  (include "predicates.md")
  (include "constraints.md")
-@@ -2537,13 +2551,6 @@
+@@ -2541,13 +2555,6 @@
  					(const_int 1))
  			  (const_int 3)])])
  
@@ -62,7 +60,7 @@
  ; indirect jump
  (define_insn "indirect_jump"
    [(set (pc) (match_operand:HI 0 "register_operand" "!z,*r"))]
-@@ -2923,7 +2930,7 @@
+@@ -2925,7 +2932,7 @@
  
  ;; Enable Interrupts
  (define_insn "enable_interrupt"
@@ -71,7 +69,7 @@
    ""
    "sei"
    [(set_attr "length" "1")
-@@ -2932,7 +2939,7 @@
+@@ -2934,7 +2941,7 @@
  
  ;; Disable Interrupts
  (define_insn "disable_interrupt"
@@ -80,7 +78,7 @@
    ""
    "cli"
    [(set_attr "length" "1")
-@@ -3032,3 +3039,219 @@
+@@ -3034,3 +3041,219 @@
      expand_epilogue (); 
      DONE;
    }")
@@ -300,8 +298,8 @@
 +  [(set_attr "length" "3")
 +   (set_attr "cc" "clobber")])
 +
---- gcc/config/avr/avr.c.orig	2008-12-01 10:51:45.062273700 -0700
-+++ gcc/config/avr/avr.c	2008-12-01 11:18:33.980387900 -0700
+--- ./gcc/config/avr/avr.c.orig	2010-03-05 15:24:52.000000000 +0100
++++ ./gcc/config/avr/avr.c	2010-03-05 15:25:53.000000000 +0100
 @@ -30,6 +30,7 @@
  #include "insn-config.h"
  #include "conditions.h"
@@ -320,7 +318,7 @@
  #include "tm_p.h"
  #include "target.h"
  #include "target-def.h"
-@@ -83,6 +86,9 @@ static bool avr_rtx_costs (rtx, int, int
+@@ -87,6 +90,9 @@
  static int avr_address_cost (rtx);
  static bool avr_return_in_memory (const_tree, const_tree);
  static struct machine_function * avr_init_machine_status (void);
@@ -330,7 +328,7 @@
  /* Allocate registers from r25 to r8 for parameters for function calls.  */
  #define FIRST_CUM_REG 26
  
-@@ -373,6 +379,12 @@ int avr_case_values_threshold = 30000;
+@@ -340,6 +346,12 @@
  #undef TARGET_STRICT_ARGUMENT_NAMING
  #define TARGET_STRICT_ARGUMENT_NAMING hook_bool_CUMULATIVE_ARGS_true
  
@@ -343,7 +341,7 @@
  struct gcc_target targetm = TARGET_INITIALIZER;
  
  void
-@@ -6258,4 +6270,237 @@ avr_return_in_memory (const_tree type, c
+@@ -6079,4 +6091,237 @@
      return false;
  }
  

================================================================
Index: packages/crossavr-gcc/crossavr-gcc-libiberty-Makefile.in.patch
diff -u packages/crossavr-gcc/crossavr-gcc-libiberty-Makefile.in.patch:1.1 packages/crossavr-gcc/crossavr-gcc-libiberty-Makefile.in.patch:1.2
--- packages/crossavr-gcc/crossavr-gcc-libiberty-Makefile.in.patch:1.1	Mon Apr  9 20:29:13 2007
+++ packages/crossavr-gcc/crossavr-gcc-libiberty-Makefile.in.patch	Thu Oct  7 19:25:07 2010
@@ -1,6 +1,7 @@
---- libiberty/Makefile.in.orig	Mon Sep 26 22:55:10 2005
-+++ libiberty/Makefile.in	Wed Mar 22 22:13:44 2006
-@@ -275,7 +275,8 @@
+diff -ur ../gcc-4.3.4.orig/libiberty/Makefile.in ./libiberty/Makefile.in
+--- ../gcc-4.3.4.orig/libiberty/Makefile.in	2007-07-25 08:26:45.000000000 +0200
++++ ./libiberty/Makefile.in	2009-10-02 15:20:13.000000000 +0200
+@@ -344,7 +344,8 @@
  @MAINT@	echo stamp > stamp-functions
  
  INSTALL_DEST = @INSTALL_DEST@
@@ -8,5 +9,6 @@
 +#install: install_to_$(INSTALL_DEST) install-subdir
 +install:
  
- install_to_libdir: all
- 	${mkinstalldirs} $(DESTDIR)$(libdir)$(MULTISUBDIR)
+ # This is tricky.  Even though CC in the Makefile contains
+ # multilib-specific flags, it's overridden by FLAGS_TO_PASS from the
+Only in ./libiberty: Makefile.in.orig

================================================================
Index: packages/crossavr-gcc/crossavr-gcc-osmain.patch
diff -u packages/crossavr-gcc/crossavr-gcc-osmain.patch:1.1 packages/crossavr-gcc/crossavr-gcc-osmain.patch:1.2
--- packages/crossavr-gcc/crossavr-gcc-osmain.patch:1.1	Sun Apr  5 14:01:27 2009
+++ packages/crossavr-gcc/crossavr-gcc-osmain.patch	Thu Oct  7 19:25:07 2010
@@ -1,61 +1,14 @@
-Not committed
-Adds OS_main attribute feature.
-Written by Anatoly Sokolov.
-Apply patch after XMEGA patch.
---------------------------------------------------------------------------------
-Index: gcc/function.c
-===================================================================
---- gcc/function.c	(revision 133747)
-+++ gcc/function.c	(working copy)
-@@ -4756,6 +4756,14 @@
- }
- 
- int
-+prologue_contains (const_rtx insn)
-+{
-+  if (contains (insn, &prologue))
-+    return 1;
-+  return 0;
-+}
-+
-+int
- prologue_epilogue_contains (const_rtx insn)
- {
-   if (contains (insn, &prologue))
-Index: gcc/rtl.h
-===================================================================
---- gcc/rtl.h	(revision 133747)
-+++ gcc/rtl.h	(working copy)
-@@ -2128,6 +2128,7 @@
- 
- /* In function.c */
- extern void reposition_prologue_and_epilogue_notes (void);
-+extern int prologue_contains (const_rtx);
- extern int prologue_epilogue_contains (const_rtx);
- extern int sibcall_epilogue_contains (const_rtx);
- extern void mark_temp_addr_taken (rtx);
---- gcc/config/avr/avr.h.orig	2008-03-31 16:48:03.477537900 -0600
-+++ gcc/config/avr/avr.h	2008-03-31 17:07:51.442457900 -0600
-@@ -1095,4 +1095,8 @@ struct machine_function GTY(())
-   /* 'true' - if current function is a task function 
-      as specified by the "OS_task" attribute.  */
-   int is_OS_task;
-+
-+  /* 'true' - if current function is a 'main' function 
-+     as specified by the "OS_main" attribute.  */
-+  int is_OS_main;
- };
---- gcc/config/avr/avr.c.orig	Mon Mar 31 19:47:54 2008
-+++ gcc/config/avr/avr.c	Mon Mar 31 20:50:08 2008
-@@ -53,6 +53,7 @@ static int interrupt_function_p (tree);
+--- ./gcc/config/avr/avr.c.orig	2010-03-05 18:01:20.000000000 +0100
++++ ./gcc/config/avr/avr.c	2010-03-05 18:01:51.000000000 +0100
+@@ -57,6 +57,7 @@
  static int signal_function_p (tree);
  static int nmi_function_p (tree);
  static int avr_OS_task_function_p (tree);
 +static int avr_OS_main_function_p (tree);
  static int avr_regs_to_save (HARD_REG_SET *);
- static void avr_args (HARD_REG_SET *);
- static int sequent_regs_live (HARD_REG_SET *);
-@@ -509,6 +513,19 @@ avr_OS_task_function_p (tree func)
+ static int sequent_regs_live (void);
+ static const char *ptrreg_to_str (int);
+@@ -603,6 +604,19 @@
    return a != NULL_TREE;
  }
  
@@ -75,7 +28,7 @@
  /* Return the number of hard registers to push/pop in the prologue/epilogue
     of the current function, and optionally store these registers in SET.  */
  
-@@ -527,9 +544,10 @@ avr_regs_to_save (HARD_REG_SET *set)
+@@ -621,9 +635,10 @@
    count = 0;
  
    /* No need to save any registers if the function never returns or 
@@ -88,7 +41,7 @@
      return 0;
  
    for (reg = 0; reg < 32; reg++)
-@@ -646,6 +664,8 @@ expand_prologue (void)
+@@ -742,6 +757,8 @@
    rtx pushword = gen_rtx_MEM (HImode,
                    gen_rtx_POST_DEC (HImode, stack_pointer_rtx));
    rtx insn;
@@ -97,7 +50,7 @@
  
    last_insn_address = 0;
    
-@@ -655,6 +675,7 @@ expand_prologue (void)
+@@ -751,6 +768,7 @@
    cfun->machine->is_signal = signal_function_p (current_function_decl);
    cfun->machine->is_nmi = nmi_function_p (current_function_decl);
    cfun->machine->is_OS_task = avr_OS_task_function_p (current_function_decl);
@@ -105,7 +58,7 @@
    
    /* Prologue: naked.  */
    if (cfun->machine->is_naked)
-@@ -669,6 +690,7 @@ expand_prologue (void)
+@@ -764,6 +782,7 @@
  	      && !cfun->machine->is_interrupt
  	      && !cfun->machine->is_signal
  	      && !cfun->machine->is_OS_task
@@ -113,7 +66,7 @@
  	      && live_seq);
  
    if (cfun->machine->is_interrupt || cfun->machine->is_signal)
-@@ -738,7 +760,7 @@ expand_prologue (void)
+@@ -903,7 +922,7 @@
          }
        if (frame_pointer_needed)
          {
@@ -122,7 +75,7 @@
  	    {
                /* Push frame pointer.  */
  	      insn = emit_move_insn (pushword, frame_pointer_rtx);
-@@ -768,7 +790,7 @@ expand_prologue (void)
+@@ -933,7 +952,7 @@
                if (TARGET_TINY_STACK)
                  {
                    if (size < -63 || size > 63)
@@ -131,7 +84,7 @@
                      
                    /* The high byte (r29) doesn't change - prefer 'subi' (1 cycle)
                       over 'sbiw' (2 cycles, same size).  */
-@@ -780,7 +802,6 @@ expand_prologue (void)
+@@ -945,7 +964,6 @@
                    myfp = frame_pointer_rtx;
                  }
                /* Calculate length.  */ 
@@ -139,7 +92,7 @@
                method1_length =
  	        get_attr_length (gen_move_insn (frame_pointer_rtx, stack_pointer_rtx));
                method1_length +=
-@@ -878,6 +899,7 @@ expand_epilogue (void)
+@@ -1043,6 +1061,7 @@
    HARD_REG_SET set;      
    int minimize;
    HOST_WIDE_INT size = get_frame_size();
@@ -147,7 +100,7 @@
    
    /* epilogue: naked  */
    if (cfun->machine->is_naked)
-@@ -893,6 +915,7 @@ expand_epilogue (void)
+@@ -1057,6 +1076,7 @@
  	      && !cfun->machine->is_interrupt
  	      && !cfun->machine->is_signal
  	      && !cfun->machine->is_OS_task
@@ -155,7 +108,7 @@
  	      && live_seq);
    
    if (minimize && (frame_pointer_needed || live_seq > 4))
-@@ -955,7 +978,7 @@ expand_epilogue (void)
+@@ -1119,7 +1139,7 @@
                    emit_move_insn (stack_pointer_rtx, frame_pointer_rtx);
                  }
              }
@@ -164,7 +117,7 @@
  	    {
                /* Restore previous frame_pointer.  */
  	      emit_insn (gen_pophi (frame_pointer_rtx));
-@@ -1787,10 +1810,18 @@ output_movhi (rtx insn, rtx operands[], 
+@@ -1939,10 +1959,18 @@
  		}
                /*  Use simple load of stack pointer if no interrupts are used
                or inside main or signal function prologue where they disabled.  */
@@ -185,7 +138,7 @@
                              && prologue_epilogue_contains (insn)))
                  {
                    *l = 2;
-@@ -4821,6 +4852,7 @@ const struct attribute_spec avr_attribut
+@@ -4969,6 +4997,7 @@
    { "nmi",       0, 0, true,  false, false,  avr_handle_fndecl_attribute },
    { "naked",     0, 0, false, true,  true,   avr_handle_fntype_attribute },
    { "OS_task",   0, 0, false, true,  true,   avr_handle_fntype_attribute },
@@ -193,3 +146,41 @@
    { NULL,        0, 0, false, false, false, NULL }
  };
  
+--- ./gcc/config/avr/avr.h.orig	2010-03-05 18:01:20.000000000 +0100
++++ ./gcc/config/avr/avr.h	2010-03-05 18:01:51.000000000 +0100
+@@ -1320,4 +1320,8 @@
+   /* 'true' - if current function is a task function 
+      as specified by the "OS_task" attribute.  */
+   int is_OS_task;
++
++  /* 'true' - if current function is a 'main' function 
++     as specified by the "OS_main" attribute.  */
++  int is_OS_main;
+ };
+--- ./gcc/function.c.orig	2009-06-19 23:44:24.000000000 +0200
++++ ./gcc/function.c	2010-03-05 18:01:51.000000000 +0100
+@@ -4757,6 +4757,14 @@
+ }
+ 
+ int
++prologue_contains (const_rtx insn)
++{
++  if (contains (insn, &prologue))
++    return 1;
++  return 0;
++}
++
++int
+ prologue_epilogue_contains (const_rtx insn)
+ {
+   if (contains (insn, &prologue))
+--- ./gcc/rtl.h.orig	2009-07-14 11:32:55.000000000 +0200
++++ ./gcc/rtl.h	2010-03-05 18:01:51.000000000 +0100
+@@ -2145,6 +2145,7 @@
+ 
+ /* In function.c */
+ extern void reposition_prologue_and_epilogue_notes (void);
++extern int prologue_contains (const_rtx);
+ extern int prologue_epilogue_contains (const_rtx);
+ extern int sibcall_epilogue_contains (const_rtx);
+ extern void mark_temp_addr_taken (rtx);

================================================================
Index: packages/crossavr-gcc/crossavr-gcc.spec
diff -u packages/crossavr-gcc/crossavr-gcc.spec:1.35 packages/crossavr-gcc/crossavr-gcc.spec:1.36
--- packages/crossavr-gcc/crossavr-gcc.spec:1.35	Sun Apr  5 13:58:16 2009
+++ packages/crossavr-gcc/crossavr-gcc.spec	Thu Oct  7 19:25:07 2010
@@ -10,33 +10,26 @@
 Summary(pt_BR.UTF-8):	Utilitários para desenvolvimento de binários da GNU - AVR gcc
 Summary(tr.UTF-8):	GNU geliştirme araçları - AVR gcc
 Name:		crossavr-gcc
-Version:	4.3.3
+Version:	4.3.5
 Release:	1
-Patch0:		%{name}-attribute_alias.patch
-Patch1:		%{name}-dwarf.patch
-Patch2:		%{name}-libiberty-Makefile.in.patch
-Patch3:		%{name}-bug-11259-v3.patch
-Patch4:		%{name}-bug-spill-v4.patch
-Patch5:		%{name}-bug-35013.patch
-Patch6:		%{name}-libgcc16.patch
-Patch7:		%{name}-bug-33009.patch
-Patch8:		%{name}-mega256.patch
-Patch9:		%{name}-mega256-additional.patch
-Patch10:	%{name}-xmega-v9.patch
-Patch11:	%{name}-xmega2.patch
-Patch12:	%{name}-atmega32m1.patch
-Patch13:	%{name}-atmega32c1.patch
-Patch14:	%{name}-atmega32u4.patch
-Patch15:	%{name}-attiny167.patch
-Patch16:	%{name}-attiny13a.patch
<<Diff was trimmed, longer than 597 lines>>

---- CVS-web:
    http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/crossavr-gcc/crossavr-gcc-bug-11259-v3.patch?r1=1.1&r2=1.2&f=u
    http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/crossavr-gcc/crossavr-gcc-bug-35013.patch?r1=1.1&r2=1.2&f=u
    http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/crossavr-gcc/crossavr-gcc-builtins-v6.patch?r1=1.1&r2=1.2&f=u
    http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/crossavr-gcc/crossavr-gcc-libiberty-Makefile.in.patch?r1=1.1&r2=1.2&f=u
    http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/crossavr-gcc/crossavr-gcc-osmain.patch?r1=1.1&r2=1.2&f=u
    http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/crossavr-gcc/crossavr-gcc.spec?r1=1.35&r2=1.36&f=u



More information about the pld-cvs-commit mailing list