regrename: Avoid disrupting SMS schedule [PR95696]
authorYunde Zhong <zhongyunde@huawei.com>
Mon, 3 Aug 2020 14:05:02 +0000 (15:05 +0100)
committerRichard Sandiford <richard.sandiford@arm.com>
Mon, 3 Aug 2020 14:05:02 +0000 (15:05 +0100)
commitd1773f58f3a03e6c764373635fa079fa7526cfcf
tree5d1b1ca140623035346cc4bc0a356569629b74ec
parentb32c5d0b72fda2588b4e170e75a9c64e4bf266c7
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