diff -Nrcpad gcc-4.1.1/gcc/objc/ChangeLog gcc-4.1.2/gcc/objc/ChangeLog
*** gcc-4.1.1/gcc/objc/ChangeLog	Wed May 24 23:41:42 2006
--- gcc-4.1.2/gcc/objc/ChangeLog	Wed Feb 14 05:11:09 2007
***************
*** 1,3 ****
--- 1,27 ----
+ 2007-02-13  Release Manager
+ 
+ 	* GCC 4.1.2 released.
+ 
+ 2007-01-23  Andrew Pinski  <pinskia@gmail.com>
+ 
+ 	PR objc/27438
+ 	* objc-act.c (objc_add_static_instance): Mark the decl as
+ 	TREE_USED.
+ 
+ 2007-01-21  Andrew Pinski  <pinskia@gmail.com>
+ 
+ 	PR objc/30479
+ 	* objc-act.c (hash_interface): Use IDENTIFIER_HASH_VALUE instead
+ 	of htab_hash_pointer.
+ 	(lookup_interface): Likewise.
+ 	(add_class): Likewise.
+ 
+ 2006-10-03  Andrew Pinski  <pinskia@physics.uc.edu>
+ 
+ 	PR objc/29195
+ 	* objc-act.c (objc_push_parm): If we change the type of the
+ 	decl, relayout the decl.
+ 
  2006-05-24  Release Manager
  
  	* GCC 4.1.1 released.
diff -Nrcpad gcc-4.1.1/gcc/objc/objc-act.c gcc-4.1.2/gcc/objc/objc-act.c
*** gcc-4.1.1/gcc/objc/objc-act.c	Fri May  5 19:51:37 2006
--- gcc-4.1.2/gcc/objc/objc-act.c	Wed Jan 24 06:06:07 2007
*************** objc_add_static_instance (tree construct
*** 1998,2003 ****
--- 1998,2004 ----
    DECL_COMMON (decl) = 1;
    TREE_STATIC (decl) = 1;
    DECL_ARTIFICIAL (decl) = 1;
+   TREE_USED (decl) = 1;
    DECL_INITIAL (decl) = constructor;
  
    /* We may be writing something else just now.
*************** static hashval_t
*** 3288,3294 ****
  hash_interface (const void *p)
  {
    const struct interface_tuple *d = p;
!   return htab_hash_pointer (d->id);
  }
  
  static int
--- 3289,3295 ----
  hash_interface (const void *p)
  {
    const struct interface_tuple *d = p;
!   return IDENTIFIER_HASH_VALUE (d->id);
  }
  
  static int
*************** lookup_interface (tree ident)
*** 3317,3323 ****
        {
  	slot = (struct interface_tuple **)
  	  htab_find_slot_with_hash (interface_htab, ident,
! 				    htab_hash_pointer (ident),
  				    NO_INSERT);
  	if (slot && *slot)
  	  i = (*slot)->class_name;
--- 3318,3324 ----
        {
  	slot = (struct interface_tuple **)
  	  htab_find_slot_with_hash (interface_htab, ident,
! 				    IDENTIFIER_HASH_VALUE (ident),
  				    NO_INSERT);
  	if (slot && *slot)
  	  i = (*slot)->class_name;
*************** add_class (tree class_name, tree name)
*** 6982,6988 ****
      interface_htab = htab_create_ggc (31, hash_interface, eq_interface, NULL);
    slot = (struct interface_tuple **)
      htab_find_slot_with_hash (interface_htab, name,
! 			      htab_hash_pointer (name),
  			      INSERT);
    if (!*slot)
      {
--- 6983,6989 ----
      interface_htab = htab_create_ggc (31, hash_interface, eq_interface, NULL);
    slot = (struct interface_tuple **)
      htab_find_slot_with_hash (interface_htab, name,
! 			      IDENTIFIER_HASH_VALUE (name),
  			      INSERT);
    if (!*slot)
      {
*************** static GTY(()) tree objc_parmlist = NULL
*** 8215,8225 ****
  static void
  objc_push_parm (tree parm)
  {
    /* Decay arrays and functions into pointers.  */
    if (TREE_CODE (TREE_TYPE (parm)) == ARRAY_TYPE)
!     TREE_TYPE (parm) = build_pointer_type (TREE_TYPE (TREE_TYPE (parm)));
    else if (TREE_CODE (TREE_TYPE (parm)) == FUNCTION_TYPE)
!     TREE_TYPE (parm) = build_pointer_type (TREE_TYPE (parm));
  
    DECL_ARG_TYPE (parm)
      = lang_hooks.types.type_promotes_to (TREE_TYPE (parm));
--- 8216,8237 ----
  static void
  objc_push_parm (tree parm)
  {
+   bool relayout_needed = false;
    /* Decay arrays and functions into pointers.  */
    if (TREE_CODE (TREE_TYPE (parm)) == ARRAY_TYPE)
!     {
!       TREE_TYPE (parm) = build_pointer_type (TREE_TYPE (TREE_TYPE (parm)));
!       relayout_needed = true;
!     }
    else if (TREE_CODE (TREE_TYPE (parm)) == FUNCTION_TYPE)
!     {
!       TREE_TYPE (parm) = build_pointer_type (TREE_TYPE (parm));
!       relayout_needed = true;
!     }
! 
!   if (relayout_needed)
!     relayout_decl (parm);
!   
  
    DECL_ARG_TYPE (parm)
      = lang_hooks.types.type_promotes_to (TREE_TYPE (parm));
diff -Nrcpad gcc-4.1.1/libobjc/ChangeLog gcc-4.1.2/libobjc/ChangeLog
*** gcc-4.1.1/libobjc/ChangeLog	Wed May 24 23:42:27 2006
--- gcc-4.1.2/libobjc/ChangeLog	Wed Feb 14 05:12:05 2007
***************
*** 1,3 ****
--- 1,7 ----
+ 2007-02-13  Release Manager
+ 
+ 	* GCC 4.1.2 released.
+ 
  2006-05-24  Release Manager
  
  	* GCC 4.1.1 released.
