Whee, more fallout from the pr90275 changes. Thankfully this time it's a target issue.
The sh4/sh4eb ports are failing vector-compare-1 execution tests after the cse changes. They only run once a week, so this wasn't caught immediately and took some time to reproduce and analyze. Ultimately the problem is one define_insn_and_split which, when split, may clobber the T register. However, the define_insn_and_split does not show this in the insn pattern. This can lead to various passes assuming the previous value in the T register is still valid when in fact, it's going to be clobbered. The CSE changes made this scenario more likely and it showed up as execution failures in the sh4/sh4eb testsuite. All the other places where we use sh_split_treg_set_expr have the appropriate clobber of the T register. Bootstrapped on sh4-linux-gnu and sh4eb-linux-gnu. Regression testing in progress (won't finish for ~12 hours). No new test as it's covered by vector- compare-1 in the testsuite. Jeff
commit eeb0c7c07133634eb5e98ba0348392684a763c95 Author: Jeff Law <l...@redhat.com> Date: Wed Mar 25 14:12:32 2020 -0600 Fix vector-compare-1 regressions on sh4/sh4eb caused by pattern clobbering T reg without expressing that in its RTL. PR rtl-optimization/90275 * config/sh/sh.md (mov_neg_si_t): Clobber the T register in the pattern. diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 06b06ab68de..3ad7a7aae0d 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2020-03-25 Jeff Law <l...@redhat.com> + + PR rtl-optimization/90275 + * config/sh/sh.md (mov_neg_si_t): Clobber the T register in the + pattern. + 2020-03-25 Jakub Jelinek <ja...@redhat.com> PR target/94292