[Bug target/65326] LRA missing a Thumb optimization.

2015-05-07 Thread renlin at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65326

renlin at gcc dot gnu.org changed:

   What|Removed |Added

 CC||renlin at gcc dot gnu.org

--- Comment #1 from renlin at gcc dot gnu.org ---
In this specific case, thumb_legitimize_address will generate ldr r0, [r9, r10]
pattern(after IRA). However, this pattern only allows LO_REGS. During reload, 
r9r10 will be spilled into LO_REGS, that's where those two mov instructions
come from.

(In reply to Matthew Wahab from comment #0)
 Created attachment 34964 [details]
 Testcase showing change in behaviour.
 
 The ARM backend no longer supports -mno-lra so only the LRA is available.
 This
 has also removed the Thumb mode optimiziation introduced in
 https://gcc.gnu.org/ml/gcc-patches/2005-08/msg01140.html to fix PR 23436.
 
 This turns sequences like
   mov r3, r9
   mov r2, r10
   ldr r0, [r3, r2]
 into
   mov r3, r9
   add r3, r3, r10
   ldr r0, [r3]
 which saves a register.
 
 Attached is a contrived test case. Compiling with gcc-4.9 with -mthumb
 -mno-lra 
 (at -O1 and higher) produces the second (better) sequence. Compiling with
 gcc-4.9 or gcc-trunk with -mthumb (at -O1 and higher) produces the first
 sequence. The sequences appear after the 'nop'
 
 gcc-4.9 is 
 arm-none-eabi-gcc (GNU Tools for ARM Embedded Processors) 4.9.3 20141119
 (release) [ARM/embedded-4_9-branch revision 218278]
 
 trunk is:
 arm-none-eabi-gcc (unknown) 5.0.0 20150217 (experimental)

[Bug target/65326] LRA missing a Thumb optimization.

2015-04-22 Thread ramana at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65326

Ramana Radhakrishnan ramana at gcc dot gnu.org changed:

   What|Removed |Added

   Keywords||missed-optimization
 Status|UNCONFIRMED |NEW
   Last reconfirmed||2015-04-22
 CC||ramana at gcc dot gnu.org,
   ||yvan.roux at linaro dot org
  Known to work||4.8.0, 4.8.1, 4.8.2, 4.9.0,
   ||4.9.1, 4.9.2, 4.9.3
 Ever confirmed|0   |1
  Known to fail||5.0, 6.0