------- Comment #13 from jakub at gcc dot gnu dot org 2010-06-16 06:55 ------- This looks wrong. The code in expand_one_stack_var_at (before dynamic stack realignment) made perfect sense, if we gave a bigger alignment to some variable (e.g. automatic array), it is useful to tell the expanders that we did. And if it got a smaller than requested alignment, similarly it is better to tell that to the expanders (the latter happens when the requested alignment is larger than what can be supported for automatic vars). >From the offset we don't know absolute alignment, unless we know how aligned is virtual_stack_vars_rtx. We should know that without dynamic stack realignment, for dynamic stack realignment all we need to ensure is that the computed alignment isn't larger than the one we are going to use. E.g. replacing MAX_SUPPORTED_STACK_ALIGNMENT with crtl->max_used_stack_slot_alignment (or crtl->stack_alignment_needed). Or say MAX (crtl->max_used_stack_slot_alignment, PREFERRED_STACK_BOUNDARY) or MAX (crtl->stack_alignment_needed, PREFERRED_STACK_BOUNDARY)?
-- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44542