aboutsummaryrefslogtreecommitdiff
path: root/gcc/cse.c
diff options
context:
space:
mode:
authorJeffrey A Law <law@cygnus.com>1998-01-23 23:06:03 +0000
committerJeff Law <law@gcc.gnu.org>1998-01-23 16:06:03 -0700
commited1ecb19301902f8f245b301534820e8c9bf7a60 (patch)
treeed67b6a1f37230177099d0ed978173edd15252cb /gcc/cse.c
parentb4b04bf97f57d04a47f6c86a68b15b4bf5d6d245 (diff)
downloadgcc-ed1ecb19301902f8f245b301534820e8c9bf7a60.zip
gcc-ed1ecb19301902f8f245b301534820e8c9bf7a60.tar.gz
gcc-ed1ecb19301902f8f245b301534820e8c9bf7a60.tar.bz2
cse.c (simplify_ternary_operation): Handle more IF_THEN_ELSE simplifications.
* cse.c (simplify_ternary_operation): Handle more IF_THEN_ELSE simplifications. From-SVN: r17465
Diffstat (limited to 'gcc/cse.c')
-rw-r--r--gcc/cse.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/gcc/cse.c b/gcc/cse.c
index e001597..3c27387 100644
--- 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: