(simplify_rtx, case FLOAT_TRUNCATE): Remove redundant float_truncate.
authorRichard Kenner <kenner@gcc.gnu.org>
Fri, 12 Aug 1994 18:57:01 +0000 (14:57 -0400)
committerRichard Kenner <kenner@gcc.gnu.org>
Fri, 12 Aug 1994 18:57:01 +0000 (14:57 -0400)
From-SVN: r7906

gcc/combine.c

index 83f2cd469c5ae784919e3164f3d09473e04a1582..581105ea8ec6537ae8b05709ee4cd0322aec07b8 100644 (file)
@@ -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