aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/f95-lang.c
diff options
context:
space:
mode:
authorYunde Zhong <zhongyunde@huawei.com>2020-08-03 15:05:02 +0100
committerRichard Sandiford <richard.sandiford@arm.com>2020-08-03 15:05:02 +0100
commitd1773f58f3a03e6c764373635fa079fa7526cfcf (patch)
tree5d1b1ca140623035346cc4bc0a356569629b74ec /gcc/fortran/f95-lang.c
parentb32c5d0b72fda2588b4e170e75a9c64e4bf266c7 (diff)
downloadgcc-d1773f58f3a03e6c764373635fa079fa7526cfcf.zip
gcc-d1773f58f3a03e6c764373635fa079fa7526cfcf.tar.gz
gcc-d1773f58f3a03e6c764373635fa079fa7526cfcf.tar.bz2
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.
Diffstat (limited to 'gcc/fortran/f95-lang.c')
0 files changed, 0 insertions, 0 deletions