------- Comment #7 from matz at gcc dot gnu dot org 2010-02-01 11:53 ------- Or making STRICT_ALIGNMENT depend on the type or mode. So that e.g. "!align(8) && align(4) && !STRICT_ALIGN(long long)" would be acceptable, but "!align(16) && STRICT_ALIGN(m128d)" would not. Or making it depend on the typesize, so that strictness would only come into play when the type is larger than 8 byte. Or something like that.
I don't think propagating down (mis)alignment would help in the general case. Some instructions simply aren't possible with misaligned memory, and need large compensation code. In that case we also wouldn't want to use the incoming stack slot for -Os. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42919