Hi all, This seems to have fallen through the cracks. Ping. https://gcc.gnu.org/ml/gcc-patches/2016-03/msg00558.html
Thanks, Kyrill 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.