http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45962
--- Comment #18 from Richard Henderson <rth at gcc dot gnu.org> 2010-10-19 23:21:31 UTC --- (In reply to comment #17) > Is there a particular reason it should be MAX_OFILE_ALIGNMENT? No. For ELF, that just means "arbitrarily large". > Hm, the default should fall back to effectively BIGGEST_ALIGNMENT unless > there's a specific __attribute__ ((__aligned__ (N))) in there. That it > apparently doesn't is a bug Hum. I hadn't noticed previously that your BIGGEST_ALIGNMENT is *also* set to BITS_PER_UNIT. > (BTW, shouldn't MINIMUM_ALIGNMENT default to STACK_ALIGNMENT? > And be named DYNAMIC_STACK_ALIGNMENT?) I dunno about "dynamic". That sounds like stack re-alignment. The current MINIMUM_ALIGNMENT leaves the alignment unchanged. > Are you open to having that fixed? Well, it appears as if get_mode_alignment is already correct, but TYPE_ALIGN and thus DECL_ALIGN don't honor BIGGEST_ALIGNMENT. I can see that if we adjust TYPE_ALIGN we'll alter the layout of all structures, which can't be a good thing. I'm not sure what the fallout would be from changing if (code != FIELD_DECL) /* For non-fields, update the alignment from the type. */ do_type_align (type, decl); to also take BIGGEST_ALIGNMENT into account. Certainly we can't change do_type_align because that's also used for FIELD_DECLs. > Not a spilled pseudo, rather the stack-saving code going wrong. > Stack-saving/restoring seems explicit and a bit intertwined; earlier > well-placed do_pending_stack_adjust() calls playing a part, then effected by > explow.c:emit_stack_save. Not a big surprise if it goes wrong due to or > uncovered by r165240. To be investigated; I'll do my part. Ug. > It might not be wrong in the long run to completely replace EXIT_IGNORE_STACK > with 1 and apply dead-code-elimination. That would be really nice. There are several ports that explicitly set it to 0: arc, h8300, m68hc11, spu, mcore, m32c. Those probably need a simple update to their epilogues to restore from frame pointer.