]> git.ipfire.org Git - thirdparty/gcc.git/commit
regrename: Avoid disrupting SMS schedule [PR95696]
authorYunde Zhong <zhongyunde@huawei.com>
Mon, 3 Aug 2020 14:05:02 +0000 (15:05 +0100)
committerGiuliano Belinassi <giuliano.belinassi@usp.br>
Mon, 17 Aug 2020 16:20:45 +0000 (13:20 -0300)
commit90b21985a39fae9bdb0cf81e99e90f6096d5e9c6
tree9b3c6577951389a84dbedb02be5309e9bd9fa76e
parentf5ac1a3d794a1a480715499405822885890bca87
regrename: Avoid disrupting SMS schedule [PR95696]

SMS is performed before reload, and each insn in SMS schedule uses
pseudo-register.  After reload, regrename pass try to adjust the hard
registers with def/use chain created by build_def_use.  For now, regrename
pass isn't aware of VLIW bundles created by SMS, it may updated a register
which may not be really unused, which will causes invalid VLIW bundles.
Before the final schedule, we recheck the validation of VLIW bundles and
reschedule the conflicted insns to avoid the above issue.  Rescheduling
the conflicted insns will destroy SMS schedule of the kernel loop, which
would be harmful to performance.

2020-08-03  Yunde Zhong  <zhongyunde@huawei.com>

gcc/
PR rtl-optimization/95696
* regrename.c (regrename_analyze): New param include_all_block_p
with default value TRUE.  If set to false, avoid disrupting SMS
schedule.
* regrename.h (regrename_analyze): Adjust prototype.
gcc/regrename.c
gcc/regrename.h