------- Additional Comments From laurent at guerby dot net  2005-07-23 18:01 
-------
FYI I successfully bootstraped on x86_64-linux with Andrew's patch:
http://gcc.gnu.org/ml/gcc-testresults/2005-07/msg01241.html
LAST_UPDATED: Sat Jul 23 10:44:53 UTC 2005

I'm updating and reboostraping. I also have a patch to ada/trans.c but I don't
remember its origin (mailing list or bugzilla).

Index: trans.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/ada/trans.c,v
retrieving revision 1.101
diff -c -r1.101 trans.c
*** trans.c     20 Jul 2005 01:18:53 -0000      1.101
--- trans.c     23 Jul 2005 17:58:13 -0000
***************
*** 3585,3590 ****
--- 3585,3591 ----
                else
                  gnu_lhs = DECL_RESULT (current_function_decl);
  
+ #if 0
                /* Do not remove the padding from GNU_RET_VAL if the inner
                   type is self-referential since we want to allocate the fixed
                   size in that case.  */
***************
*** 3596,3601 ****
--- 3597,3603 ----
                    && (CONTAINS_PLACEHOLDER_P
                        (TYPE_SIZE (TREE_TYPE (gnu_ret_val)))))
                  gnu_ret_val = TREE_OPERAND (gnu_ret_val, 0);
+ #endif
  
                if (TYPE_RETURNS_BY_REF_P (gnu_subprog_type)
                    || By_Ref (gnat_node))
***************
*** 4549,4576 ****
        *expr_p = TREE_OPERAND (*expr_p, 0);
        return GS_OK;
  
-     case ADDR_EXPR:
-       /* If we're taking the address of a constant CONSTRUCTOR, force it to
-        be put into static memory.  We know it's going to be readonly given
-        the semantics we have and it's required to be static memory in
-        the case when the reference is in an elaboration procedure.  */
-       if (TREE_CODE (TREE_OPERAND (expr, 0)) == CONSTRUCTOR
-         && TREE_CONSTANT (TREE_OPERAND (expr, 0)))
-       {
-         tree new_var
-           = create_tmp_var (TREE_TYPE (TREE_OPERAND (expr, 0)), "C");
- 
-         TREE_READONLY (new_var) = 1;
-         TREE_STATIC (new_var) = 1;
-         TREE_ADDRESSABLE (new_var) = 1;
-         DECL_INITIAL (new_var) = TREE_OPERAND (expr, 0);
- 
-         TREE_OPERAND (expr, 0) = new_var;
-         recompute_tree_invarant_for_addr_expr (expr);
-         return GS_ALL_DONE;
-       }
-       return GS_UNHANDLED;
- 
      case COMPONENT_REF:
        /* We have a kludge here.  If the FIELD_DECL is from a fat pointer and 
is
         from an early dummy type, replace it with the proper FIELD_DECL.  */
--- 4551,4556 ----
***************
*** 5361,5367 ****
  
      case UNCONSTRAINED_ARRAY_REF:
      case INDIRECT_REF:
!     case CONSTRUCTOR:
      case NULL_EXPR:
      case SAVE_EXPR:
        return true;
--- 5341,5347 ----
  
      case UNCONSTRAINED_ARRAY_REF:
      case INDIRECT_REF:
! /*    case CONSTRUCTOR:*/
      case NULL_EXPR:
      case SAVE_EXPR:
        return true;


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=22631

Reply via email to