cse.c (simplify_ternary_operation): Handle more IF_THEN_ELSE simplifications.
authorJeffrey A Law <law@cygnus.com>
Fri, 23 Jan 1998 23:06:03 +0000 (23:06 +0000)
committerJeff Law <law@gcc.gnu.org>
Fri, 23 Jan 1998 23:06:03 +0000 (16:06 -0700)
        * cse.c (simplify_ternary_operation): Handle more IF_THEN_ELSE
        simplifications.

From-SVN: r17465

gcc/ChangeLog
gcc/cse.c

index 0292071..1beac6c 100644 (file)
@@ -1,5 +1,8 @@
 Fri Jan 23 22:48:24 1998  Jeffrey A Law  (law@cygnus.com)
 
+       * cse.c (simplify_ternary_operation): Handle more IF_THEN_ELSE
+       simplifications.
+
        * crtstuff.c (init_dummy): Keep the epilogue in the init
        section for non-ELF systems.
 
index e001597..3c27387 100644 (file)
--- a/gcc/cse.c
+++ b/gcc/cse.c
@@ -4713,6 +4713,17 @@ simplify_ternary_operation (code, mode, op0_mode, op0, op1, op2)
          && rtx_equal_p (XEXP (op0, 1), op1)
          && rtx_equal_p (XEXP (op0, 0), op2))
        return op2;
+      else if (! side_effects_p (op0))
+       {
+         rtx temp;
+         temp = simplify_relational_operation (GET_CODE (op0), op0_mode,
+                                               XEXP (op0, 0), XEXP (op0, 1));
+         /* See if any simplifications were possible.  */
+         if (temp == const0_rtx)
+           return op2;
+         else if (temp == const1_rtx)
+           return op1;
+       }
       break;
 
     default: