Since we now only call is_just_move on the original instructions, we always have an rtx_insn* (not just a pattern), so we can use single_set on it. This makes no detectable difference at all on all thirty Linux targets I test, but it does help cris, and it is simpler, cleaner code anyway.
Tested on powerpc64-linux {-m32,-m64}. Committed. Segher 2020-07-16 Hans-Peter Nilsson <h...@axis.com> Segher Boessenkool <seg...@kernel.crashing.org> PR target/93372 * combine.c (is_just_move): Take an rtx_insn* as argument. Use single_set on it. --- gcc/combine.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/gcc/combine.c b/gcc/combine.c index b044f29..4fee114 100644 --- a/gcc/combine.c +++ b/gcc/combine.c @@ -2624,15 +2624,16 @@ can_split_parallel_of_n_reg_sets (rtx_insn *insn, int n) return true; } -/* Return whether X is just a single set, with the source +/* Return whether X is just a single_set, with the source a general_operand. */ static bool -is_just_move (rtx x) +is_just_move (rtx_insn *x) { - if (INSN_P (x)) - x = PATTERN (x); + rtx set = single_set (x); + if (!set) + return false; - return (GET_CODE (x) == SET && general_operand (SET_SRC (x), VOIDmode)); + return general_operand (SET_SRC (set), VOIDmode); } /* Callback function to count autoincs. */ -- 1.8.3.1