On 05/05/15 19:07, Richard Biener wrote:
> On May 5, 2015 4:33:58 PM GMT+02:00, Richard Earnshaw 
> <richard.earns...@foss.arm.com> wrote:
>> On 05/05/15 15:33, Richard Earnshaw wrote:
>>> On 05/05/15 15:29, Jakub Jelinek wrote:
>>>> On Tue, May 05, 2015 at 02:20:43PM +0100, Richard Earnshaw wrote:
>>>>> 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...
>>>>
>>>> While this requirement isn't documented, it is clearly common sense
>> or at
>>>> least something any kind of testing would reveal immediately.
>>>
>>> Then clearly no such tests exist in the testsuite :-(
>>>
>>
>> Or, more precisely, no such tests existed in 2008, when the code went
>> in.
> 
> That just means that the code was the first that make this matter.
> 

Exactly.  The comment was in response to the suggestion the code wasn't
tested.

> BTW, what do other compilers do (I suppose llvm supports the gcc extensions 
> for alignment)?  Can llvm and gcc interoperate properly here? Do the cited 
> testcases work with llvm?
> 

We're looking into it.  I'm talking to our LLVM team and we'll make sure
we have a consistent set of rules.

R.

> Richard.
> 
>>
>> R.
>>
>>> R.
>>>
>>>> And it is nothing broken recently (except that with the SRA changes
>> it hits
>>>> much more often), looking e.g. at GCC 3.2, I'm seeing that
>> expand_call is on
>>>> that testcase also called with pretty random TYPE_ALIGN on the
>> argument
>>>> types; we didn't have GIMPLE then, so it is nothing that GIMPLE
>> brought in.
>>>>
>>>>    Jakub
>>>>
>>>
> 
> 

Reply via email to