Richard Biener wrote:
> > On Tue, 31 Mar 2015, Alan Lawrence wrote:
> >
>> >> (1) If we wish to keep the AAPCS principle that varargs are passed just as
>> >> named args, we should use TYPE_MAIN_VARIANT inside
>> >> arm_needs_doubleword_alignment, which will then ignore overalignment on
both
>> >> varargs _and named args_. However this would be silently ABI-changing....?
>> >>
>> >> (2) It seems to me that SRA is the only way for overalignment info to be
>> >> present on a value, so the patch to tree-sra.c/create_access_replacement
seems
>> >> to make things more consistent?
> >
> > I'm not so sure about (2), SCCVN records the type of a reference
> > and PRE uses it to create the LHS temporaries to insert them.
> > You'd need some tricky order of optimizations to expose that to
> > a call argument though (copy-propagating the inserted value to
> > a call argument). LIM may have similar issues (when doing store-motion),
> > so may predictive commoning and loop distribution (and maybe others I
> > forgot).
Hmmm. The other cases you mention are somewhat worrisome, as we don't know if
there are testcases that might tickle these too. But I think making a
last-minute change to the backend, *that would affect the ABI for prototyped
arguments*, is asking for trouble; we don't have time to think through the
implications or make a proper spec, and I can easily see us wanting to change it
*again* for gcc 6! So I think your patch to tree-sra.c
(create_access_replacement) seems the right fix?
--Alan