From: Ulrich Weigand Date: Sat, 7 Mar 2009 16:02:30 +0000 (+0000) Subject: re PR middle-end/38028 (eh failures on spu-elf) X-Git-Tag: releases/gcc-4.4.0~334 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3a695389b367b19c3987d050908c6e7fb58225f0;p=thirdparty%2Fgcc.git re PR middle-end/38028 (eh failures on spu-elf) PR middle-end/38028 * function.c (assign_parm_setup_stack): Use STACK_SLOT_ALIGNMENT to determine alignment passed to assign_stack_local. (assign_parms_unsplit_complex): Likewise. * except.c (sjlj_build_landing_pads): Likewise. From-SVN: r144696 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 68bd222fb796..6aeb8a40890a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2009-03-07 Ulrich Weigand + + PR middle-end/38028 + * function.c (assign_parm_setup_stack): Use STACK_SLOT_ALIGNMENT to + determine alignment passed to assign_stack_local. + (assign_parms_unsplit_complex): Likewise. + * except.c (sjlj_build_landing_pads): Likewise. + 2009-03-06 Jakub Jelinek PR middle-end/39360 diff --git a/gcc/except.c b/gcc/except.c index c762edc022e6..2913fc8f31f8 100644 --- a/gcc/except.c +++ b/gcc/except.c @@ -2017,11 +2017,13 @@ sjlj_build_landing_pads (void) if (sjlj_find_directly_reachable_regions (lp_info)) { rtx dispatch_label = gen_label_rtx (); - + int align = STACK_SLOT_ALIGNMENT (sjlj_fc_type_node, + TYPE_MODE (sjlj_fc_type_node), + TYPE_ALIGN (sjlj_fc_type_node)); crtl->eh.sjlj_fc = assign_stack_local (TYPE_MODE (sjlj_fc_type_node), int_size_in_bytes (sjlj_fc_type_node), - TYPE_ALIGN (sjlj_fc_type_node)); + align); sjlj_assign_call_site_values (dispatch_label, lp_info); sjlj_mark_call_sites (lp_info); diff --git a/gcc/function.c b/gcc/function.c index 471b91f8eb50..0cbcbd3e0544 100644 --- a/gcc/function.c +++ b/gcc/function.c @@ -2967,10 +2967,13 @@ assign_parm_setup_stack (struct assign_parm_data_all *all, tree parm, if (data->stack_parm == 0) { + int align = STACK_SLOT_ALIGNMENT (data->passed_type, + GET_MODE (data->entry_parm), + TYPE_ALIGN (data->passed_type)); data->stack_parm = assign_stack_local (GET_MODE (data->entry_parm), GET_MODE_SIZE (GET_MODE (data->entry_parm)), - TYPE_ALIGN (data->passed_type)); + align); set_mem_attributes (data->stack_parm, parm, 1); } @@ -3032,11 +3035,13 @@ assign_parms_unsplit_complex (struct assign_parm_data_all *all, tree fnargs) { rtx rmem, imem; HOST_WIDE_INT size = int_size_in_bytes (TREE_TYPE (parm)); + int align = STACK_SLOT_ALIGNMENT (TREE_TYPE (parm), + DECL_MODE (parm), + TYPE_ALIGN (TREE_TYPE (parm))); /* split_complex_arg put the real and imag parts in pseudos. Move them to memory. */ - tmp = assign_stack_local (DECL_MODE (parm), size, - TYPE_ALIGN (TREE_TYPE (parm))); + tmp = assign_stack_local (DECL_MODE (parm), size, align); set_mem_attributes (tmp, parm, 1); rmem = adjust_address_nv (tmp, inner, 0); imem = adjust_address_nv (tmp, inner, GET_MODE_SIZE (inner));