[committed] Add missing T register clobber for SH port
Jeff Law
law@redhat.com
Wed Mar 25 20:14:42 GMT 2020
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
-------------- next part --------------
commit eeb0c7c07133634eb5e98ba0348392684a763c95
Author: Jeff Law <law@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 <law@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 <jakub@redhat.com>
PR target/94292
More information about the Gcc-patches
mailing list