On 7/9/19 2:06 PM, Dragan Mladjenovic wrote:
> This patch prevents merging of CALL instructions that that have different
> REG_CALL_DECL notes attached to them.
> 
> On most architectures this is not an important distinction. Usually 
> instruction patterns
> for calls to different functions reference different SYMBOL_REF-s, so they 
> won't match.
> On MIPS PIC calls get split into an got_load/*call_internal pair where the 
> latter represents
> indirect register call w/o SYMBOL_REF attached (until machine_reorg pass). 
> The bugzilla issue
> had such two internal_call-s merged despite the fact that they had different 
> register usage
> information assigned by ipa-ra.
> 
> As per comment form Richard Sandiford, this version compares reg usage for 
> both call
> instruction instead of shallow comparing the notes. Tests updated accordingly.
> 
> gcc/ChangeLog:
> 
> 2019-07-09  Dragan Mladjenovic  <dmladjeno...@wavecomp.com>
> 
>       * cfgcleanup.c (old_insns_match_p): Check if used hard regs set is equal
>       for both call instructions.
> 
> gcc/testsuite/ChangeLog:
> 
> 2019-07-09  Dragan Mladjenovic  <dmladjeno...@wavecomp.com>
> 
>       * gcc.target/mips/cfgcleanup-jalr1.c: New test.
>       * gcc.target/mips/cfgcleanup-jalr2.c: New test.
>       * gcc.target/mips/cfgcleanup-jalr3.c: New test.
THanks.  I've installed this on the trunk.

jeff

Reply via email to