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: g++ 3.1 EH broken for irix6.5


You are right.  Backing out that patch gets EH working again.




> -- Patch reproduced...
> 
> Sat Jun  2 06:53:50 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
> 
> 	* tree.h (struct record_layout_info_s): New field unpadded_align.
> 	(set_lang_adjust_rli): New declaration.
> 	* stor-layout.c (layout_decl): If DECL is packed, but at alignment
> 	it would have if not packed, do not downgrade DECL_ALIGN.
> 	(lang_adjust_rli, set_lang_adjust_rli): New.
> 	(start_record_layout): Initialize new field unpadded_align.
> 	(debug_rli): Display it.
> 	(place_union_field, place_field): Set it.
> 	(layout_type, case RECORD_TYPE): Call via lang_adjust_rli if set.
> 
> 	* print-tree.c (print_node): Don't print "regdecl" when bit doesn't
> 	mean that; use proper names instead.
> 	Print DECL_NO_STATIC_CHAIN.
> 
> 	* except.c (expand_builtin_frob_return_addr): Add missing call
> 	to convert_memory_address #ifdef POINTERS_EXTEND_UNSIGNED.
> 	(expand_builtin_eh_return): Likewise.
> 	(expand_eh_return): Clean up ptr_mode != Pmode cases.
> 
> Index: stor-layout.c
> ===================================================================
> RCS file: /cvs/gcc/gcc/gcc/stor-layout.c,v
> retrieving revision 1.97
> retrieving revision 1.98
> diff -c -p -d -r1.97 -r1.98
> *** stor-layout.c	2001/05/02 14:31:45	1.97
> --- stor-layout.c	2001/06/02 11:14:06	1.98
> *************** layout_decl (decl, known_align)
> *** 381,387 ****
>         DECL_BIT_FIELD_TYPE (decl) = DECL_BIT_FIELD (decl) ? type : 0;
>         if (maximum_field_alignment != 0)
>   	DECL_ALIGN (decl) = MIN (DECL_ALIGN (decl),
> maximum_field_alignment);
> !       else if (DECL_PACKED (decl))
>   	{
>   	  DECL_ALIGN (decl) = MIN (DECL_ALIGN (decl), BITS_PER_UNIT);
>   	  DECL_USER_ALIGN (decl) = 0;
> --- 381,387 ----
>         DECL_BIT_FIELD_TYPE (decl) = DECL_BIT_FIELD (decl) ? type : 0;
>         if (maximum_field_alignment != 0)
>   	DECL_ALIGN (decl) = MIN (DECL_ALIGN (decl),
> maximum_field_alignment);
> !       else if (DECL_PACKED (decl) && known_align % DECL_ALIGN (decl) !=
> 0)
>   	{
>   	  DECL_ALIGN (decl) = MIN (DECL_ALIGN (decl), BITS_PER_UNIT);
>   	  DECL_USER_ALIGN (decl) = 0;


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