From fc84b6f26828d89c4c34d17d5cc6a813aca0a972 Mon Sep 17 00:00:00 2001 From: law Date: Mon, 5 Oct 1998 09:05:58 +0000 Subject: [PATCH] 8 * combine.c (simplify_rtx): Do not replace TRUNCATE with a SUBREG if truncation is not a no-op. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@22835 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/combine.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/gcc/combine.c b/gcc/combine.c index ce488e294c4..420a60fca5f 100644 --- a/gcc/combine.c +++ b/gcc/combine.c @@ -3773,9 +3773,12 @@ simplify_rtx (x, op0_mode, last, in_dest) return SUBREG_REG (XEXP (x, 0)); /* If we know that the value is already truncated, we can - replace the TRUNCATE with a SUBREG. */ - if (num_sign_bit_copies (XEXP (x, 0), GET_MODE (XEXP (x, 0))) - >= GET_MODE_BITSIZE (mode) + 1) + replace the TRUNCATE with a SUBREG if TRULY_NOOP_TRUNCATION is + nonzero for the corresponding modes. */ + if (TRULY_NOOP_TRUNCATION (GET_MODE_BITSIZE (mode), + GET_MODE_BITSIZE (GET_MODE (XEXP (x, 0)))) + && num_sign_bit_copies (XEXP (x, 0), GET_MODE (XEXP (x, 0))) + >= GET_MODE_BITSIZE (mode) + 1) return gen_lowpart_for_combine (mode, XEXP (x, 0)); /* A truncate of a comparison can be replaced with a subreg if -- 2.11.4.GIT