aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1994-08-12 14:57:01 -0400
committerRichard Kenner <kenner@gcc.gnu.org>1994-08-12 14:57:01 -0400
commit1d12df723d8dc90f2f75b73bbf799725c214584b (patch)
tree9e43a35e7e1f25f831ab0f0c37de9cb1b6913589 /gcc
parent7d79bcc1698293a21d4b6d33f32d108072df44cf (diff)
downloadgcc-1d12df723d8dc90f2f75b73bbf799725c214584b.zip
gcc-1d12df723d8dc90f2f75b73bbf799725c214584b.tar.gz
gcc-1d12df723d8dc90f2f75b73bbf799725c214584b.tar.bz2
(simplify_rtx, case FLOAT_TRUNCATE): Remove redundant float_truncate.
From-SVN: r7906
Diffstat (limited to 'gcc')
-rw-r--r--gcc/combine.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/gcc/combine.c b/gcc/combine.c
index 83f2cd4..581105e 100644
--- a/gcc/combine.c
+++ b/gcc/combine.c
@@ -3444,6 +3444,13 @@ simplify_rtx (x, op0_mode, last, in_dest)
&& GET_MODE (XEXP (XEXP (XEXP (x, 0), 0), 0)) == mode)
return gen_unary (GET_CODE (XEXP (x, 0)), mode, mode,
XEXP (XEXP (XEXP (x, 0), 0), 0));
+
+ /* (float_truncate:SF (subreg:DF (float_truncate:SF X) 0))
+ is (float_truncate:SF x). */
+ if (GET_CODE (XEXP (x, 0)) == SUBREG
+ && subreg_lowpart_p (XEXP (x, 0))
+ && GET_CODE (SUBREG_REG (XEXP (x, 0))) == FLOAT_TRUNCATE)
+ return SUBREG_REG (XEXP (x, 0));
break;
#ifdef HAVE_cc0