From 99c2b71fd5ba314067699ba0dfbf96d8e8967181 Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Fri, 2 May 1997 18:16:50 +0000 Subject: Check the mode when checking values equivalent to sreg From-SVN: r14009 --- gcc/reload1.c | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) (limited to 'gcc/reload1.c') diff --git a/gcc/reload1.c b/gcc/reload1.c index 8489fe4..199ae68 100644 --- a/gcc/reload1.c +++ b/gcc/reload1.c @@ -8035,8 +8035,21 @@ reload_cse_noop_set_p (set, insn) for (x = reg_values[sreg]; x; x = XEXP (x, 1)) { - if (XEXP (x, 0) != 0 - && reload_cse_regno_equal_p (dreg, XEXP (x, 0), dest_mode)) + rtx tmp; + + if (XEXP (x, 0) == 0) + continue; + + if (dest_mode == GET_MODE (x)) + tmp = XEXP (x, 0); + else if (GET_MODE_BITSIZE (dest_mode) + < GET_MODE_BITSIZE (GET_MODE (x))) + tmp = gen_lowpart_common (dest_mode, XEXP (x, 0)); + else + continue; + + if (tmp + && reload_cse_regno_equal_p (dreg, tmp, dest_mode)) { ret = 1; break; -- cgit v1.1