On 10/11/18 2:40 PM, Jeff Law wrote: > On 10/11/18 1:23 PM, Peter Bergner wrote: >> On 10/11/18 1:18 PM, Peter Bergner wrote: >>> Ok, after working in gdb, I see that the PA-RISC port still uses reload >>> and not LRA, but it too seems to have the same issue of reusing input >>> regs that have REG_DEAD notes, so the question still stands. It's just >>> that whatever fix we come up with will have to be to both LRA and reload. >> >> On second thought, I'm thinking we should just leave reload alone and >> only fix this in LRA. That means we'd have to disable the reg copy >> handling when not using LRA though, which might be another reason to >> get targets to move to LRA? I've verified the following patch gets >> the PA-RISC test case to pass again. Thoughts? >> >> If ok, I still have to dig into the fails we're seeing on LRA targets. > Hmmm. Interesting. I wonder if all the failing targets were reload > targets..... If so, this may be the way forward -- I certainly don't > want to spend much, if any, time fixing reload. > > I'm in the middle of something, but will try to look at each of the > failing targets and confirm they use reload by default.
These are the easy ones (they default to reload): bergner@pike:~/gcc/gcc-fsf-mainline/gcc/config$ grep -r TARGET_LRA_P | grep false | sort alpha/alpha.c:#define TARGET_LRA_P hook_bool_void_false avr/avr.c:#define TARGET_LRA_P hook_bool_void_false bfin/bfin.c:#define TARGET_LRA_P hook_bool_void_false c6x/c6x.c:#define TARGET_LRA_P hook_bool_void_false cr16/cr16.c:#define TARGET_LRA_P hook_bool_void_false cris/cris.c:#define TARGET_LRA_P hook_bool_void_false epiphany/epiphany.c:#define TARGET_LRA_P hook_bool_void_false fr30/fr30.c:#define TARGET_LRA_P hook_bool_void_false frv/frv.c:#define TARGET_LRA_P hook_bool_void_false h8300/h8300.c:#define TARGET_LRA_P hook_bool_void_false ia64/ia64.c:#define TARGET_LRA_P hook_bool_void_false iq2000/iq2000.c:#define TARGET_LRA_P hook_bool_void_false lm32/lm32.c:#define TARGET_LRA_P hook_bool_void_false m32c/m32c.c:#define TARGET_LRA_P hook_bool_void_false m32r/m32r.c:#define TARGET_LRA_P hook_bool_void_false m68k/m68k.c:#define TARGET_LRA_P hook_bool_void_false mcore/mcore.c:#define TARGET_LRA_P hook_bool_void_false microblaze/microblaze.c:#define TARGET_LRA_P hook_bool_void_false mmix/mmix.c:#define TARGET_LRA_P hook_bool_void_false mn10300/mn10300.c:#define TARGET_LRA_P hook_bool_void_false moxie/moxie.c:#define TARGET_LRA_P hook_bool_void_false msp430/msp430.c:#define TARGET_LRA_P hook_bool_void_false nvptx/nvptx.c:#define TARGET_LRA_P hook_bool_void_false pa/pa.c:#define TARGET_LRA_P hook_bool_void_false rl78/rl78.c:#define TARGET_LRA_P hook_bool_void_false spu/spu.c:#define TARGET_LRA_P hook_bool_void_false stormy16/stormy16.c:#define TARGET_LRA_P hook_bool_void_false tilegx/tilegx.c:#define TARGET_LRA_P hook_bool_void_false tilepro/tilepro.c:#define TARGET_LRA_P hook_bool_void_false vax/vax.c:#define TARGET_LRA_P hook_bool_void_false visium/visium.c:#define TARGET_LRA_P hook_bool_void_false xtensa/xtensa.c:#define TARGET_LRA_P hook_bool_void_false These are harder since they support -mlra: arc/arc.c:#define TARGET_LRA_P arc_lra_p ft32/ft32.c:#define TARGET_LRA_P ft32_lra_p mips/mips.c:#define TARGET_LRA_P mips_lra_p pdp11/pdp11.c:#define TARGET_LRA_P pdp11_lra_p powerpcspe/powerpcspe.c:#define TARGET_LRA_P rs6000_lra_p rx/rx.c:#define TARGET_LRA_P rx_enable_lra s390/s390.c:#define TARGET_LRA_P s390_lra_p sh/sh.c:#define TARGET_LRA_P sh_lra_p sparc/sparc.c:#define TARGET_LRA_P sparc_lra_p Quickly looking into their *.opt files, the follwoing default to LRA: mips, s390 while these default to reload: ft32, sh4 and these I'm not sure of without looking deeper: arc, pdp11, powerpcspe, rx, sparc ...if that helps. Peter