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