This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: egcs-2.93.08 19990215 sparc-sun-solaris2.5 bootstrap fails (genrecog)




  In message <orbtirbl5i.fsf@araguaia.dcc.unicamp.br>you write:
  > Yep.  assign_stack_temp used to call assign_stack_local with -1 for
  > align, if it ended up having to create a new stack slot.  Now,
  > assign_stack_temp_for_type will calculate some value for align and
  > pass it instead.
[ ... ]

Y'all want to give this (untested) patch a try?


Index: function.c
===================================================================
RCS file: /egcs/carton/cvsfiles/egcs/gcc/function.c,v
retrieving revision 1.73
diff -c -3 -p -r1.73 function.c
*** function.c	1999/02/10 23:10:39	1.73
--- function.c	1999/02/18 19:57:55
*************** assign_stack_temp_for_type (mode, size, 
*** 963,968 ****
--- 963,980 ----
  
        p = (struct temp_slot *) oballoc (sizeof (struct temp_slot));
  
+       /* We are passing an explicit alignment request to assign_stack_local.
+ 	 One side effect of that is assign_stack_local will not round SIZE
+ 	 to ensure the frame offset remains suitably aligned.
+ 
+ 	 So for requests which depended on the rounding of SIZE, we go ahead
+ 	 and round it now.  We also make sure ALIGNMENT is at least
+ 	 BIGGEST_ALIGNMENT.  */
+       if (mode == BLKmode)
+ 	{
+ 	  align = MAX (align, BIGGEST_ALIGNMENT / BITS_PER_UNIT);
+ 	  size = CEIL_ROUND (size, align);
+ 	}
        p->slot = assign_stack_local (mode, size, align);
  
        p->align = align;


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]