On 05/05/15 14:06, Jakub Jelinek wrote: > On Tue, May 05, 2015 at 02:02:19PM +0100, Richard Earnshaw wrote: >> In a literal sense, yes. However, even K&R & stdarg have standard >> promotion and conversion rules (size < int => int, floats promoted to >> double, etc). What are those rules for GCC's overaligned types (ie >> where in the docs does it say what happens and how a back-end should >> interpret them)? Shouldn't the mid-end be doing that work so as to > > For the middle-end, the TYPE_ALIGN info on expression types is considered > useless, you can get there anything. There is no conversion rule to what > you get for myalignedint + int, or (myalignedint) int, or (int) > myalignedint, etc. > >> create a consistent view of the values passed into the back-end? It >> seems to me that at present the back-end has to be psychic as to what is >> really happening. > > No, the backend just shouldn't consider TYPE_ALIGN on the scalars, and it > seems only arm ever looks at that. >
Nothing in the specification for TARGET_FUNCTION_ARG (or any of the related functions) makes any mention of this... R. > Jakub >