------- Comment #3 from jakub at gcc dot gnu dot org 2008-12-03 12:12 ------- I'd say the bug is in assign_parm_find_stack_rtl:
stack_parm = crtl->args.internal_arg_pointer; if (offset_rtx != const0_rtx) stack_parm = gen_rtx_PLUS (Pmode, stack_parm, offset_rtx); stack_parm = gen_rtx_MEM (data->promoted_mode, stack_parm); set_mem_attributes (stack_parm, parm, 1); /* set_mem_attributes could set MEM_SIZE to the passed mode's size, while promoted mode's size is needed. */ if (data->promoted_mode != BLKmode && data->promoted_mode != DECL_MODE (parm)) set_mem_size (stack_parm, GEN_INT (GET_MODE_SIZE (data->promoted_mode))); In addition to setting MEM_SIZE it should also set MEM_OFFSET. -- jakub at gcc dot gnu dot org changed: What |Removed |Added ---------------------------------------------------------------------------- AssignedTo|unassigned at gcc dot gnu |jakub at gcc dot gnu dot org |dot org | Status|NEW |ASSIGNED Last reconfirmed|2008-12-02 20:24:57 |2008-12-03 12:12:26 date| | http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38367