On 09.07.2019. 23:21, Jeff Law wrote: > 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 Thanks. Can this be back-ported to active branches also. This issue seems to be there since gcc6 if not gcc5.
Thanks in advance, Dragan