From c2e0ce216797712a6ce774670ff6753428d2f16a Mon Sep 17 00:00:00 2001
From: nemet <nemet@138bc75d-0d04-0410-961f-82ee72b054a4>
Date: Tue, 14 Feb 2006 07:10:35 +0000
Subject: 	* simplify-rtx.c (simplify_unary_operation_1) <TRUNCATE>:
 Return 	new expression in the requested machine mode.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@110959 138bc75d-0d04-0410-961f-82ee72b054a4
---
 gcc/simplify-rtx.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

(limited to 'gcc/simplify-rtx.c')

diff --git a/gcc/simplify-rtx.c b/gcc/simplify-rtx.c
index 4cdbad754ed..c949dea1d16 100644
--- a/gcc/simplify-rtx.c
+++ b/gcc/simplify-rtx.c
@@ -609,12 +609,13 @@ simplify_unary_operation_1 (enum rtx_code code, enum machine_mode mode, rtx op)
 	return simplify_gen_unary (GET_CODE (op), mode,
 				   XEXP (XEXP (op, 0), 0), mode);
 
-      /* (truncate:SI (subreg:DI (truncate:SI X) 0)) is
-	 (truncate:SI x).  */
+      /* (truncate:A (subreg:B (truncate:C X) 0)) is
+	 (truncate:A X).  */
       if (GET_CODE (op) == SUBREG
 	  && GET_CODE (SUBREG_REG (op)) == TRUNCATE
 	  && subreg_lowpart_p (op))
-	return SUBREG_REG (op);
+	return simplify_gen_unary (TRUNCATE, mode, XEXP (SUBREG_REG (op), 0),
+				   GET_MODE (XEXP (SUBREG_REG (op), 0)));
 
       /* If we know that the value is already truncated, we can
          replace the TRUNCATE with a SUBREG if TRULY_NOOP_TRUNCATION
-- 
cgit v1.2.1