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,

Thanks,
ramana

Reply via email to