http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46859
Dave Korn <davek at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |davek at gcc dot gnu.org --- Comment #2 from Dave Korn <davek at gcc dot gnu.org> 2010-12-09 20:31:25 UTC --- I note that if you re-write foo2 like this: int __attribute__((aligned(4096))) * foo2a () { return 0; } it gets aligned properly. I think something must be going wrong when the parser starts to build a derived pointer type based on the underlying scalar type, but that's just a first guess.