On 01/06/16 10:02, Ramana Radhakrishnan wrote:
> 
> 
> On 09/03/16 12:56, Kyrill Tkachov wrote:
>> Hi all,
>>
>> I notice that the output code for our store exclusive patterns accesses 
>> unallocated memory.
>> It wants to output an strexd instruction with a pair of consecutive 
>> registers corresponding
>> to a DImode value. For that it creates the SImode top half of the DImode 
>> register and puts it
>> into operands[3]. But the pattern only defines entries only up to 
>> operands[2], with no match_dup 3
>> or like that, so operands[3] should technically be out of bounds.
>>
>> We already have a mechanism for printing the top half of a DImode register, 
>> that's the 'H' output modifier.
>> So this patch changes those patterns to use that, eliminating the out of 
>> bounds access and making
>> the code a bit simpler as well.
>>
>> Bootstrapped and tested on arm-none-linux-gnueabihf.
>>
>> Ok for trunk?
>>
>> Thanks,
>> Kyrill
>>
>> 2016-03-09  Kyrylo Tkachov  <kyrylo.tkac...@arm.com>
>>
>>     * config/arm/sync.md (arm_store_exclusive<mode>):
>>     Use 'H' output modifier on operands[2] rather than creating a new
>>     entry in out-of-bounds memory of the operands array.
>>     (arm_store_release_exclusivedi): Likewise.
> 
> 
> Ok,
> 
Ah hang on - is this safe for big-endian - remind me again why we shouldn't use 
'Q' and 'R' here ?

Ramana

> Thanks,
> ramana
> 

Reply via email to