aboutsummaryrefslogtreecommitdiff
path: root/gcc/fold-const.c
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1997-01-27 09:05:06 -0500
committerRichard Kenner <kenner@gcc.gnu.org>1997-01-27 09:05:06 -0500
commit8e3df5dce2b3501e9f556fe8c7b956b0592022dd (patch)
treefaa7d4469326a350c8a6c4c73a9013c78802a79e /gcc/fold-const.c
parent12dd565fc59325e34df949b19aca788026616bf1 (diff)
downloadgcc-8e3df5dce2b3501e9f556fe8c7b956b0592022dd.zip
gcc-8e3df5dce2b3501e9f556fe8c7b956b0592022dd.tar.gz
gcc-8e3df5dce2b3501e9f556fe8c7b956b0592022dd.tar.bz2
(fold): Don't make COND_EXPR when both expr and one part are comparisons.
From-SVN: r13553
Diffstat (limited to 'gcc/fold-const.c')
-rw-r--r--gcc/fold-const.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/gcc/fold-const.c b/gcc/fold-const.c
index dedbeed..e76d6b9 100644
--- a/gcc/fold-const.c
+++ b/gcc/fold-const.c
@@ -3756,7 +3756,8 @@ fold (expr)
fold (build (code, type,
arg0, TREE_OPERAND (arg1, 1))));
else if (TREE_CODE (arg1) == COND_EXPR
- || TREE_CODE_CLASS (TREE_CODE (arg1)) == '<')
+ || (TREE_CODE_CLASS (TREE_CODE (arg1)) == '<'
+ && TREE_CODE_CLASS (code) != '<'))
{
tree test, true_value, false_value;
@@ -3812,7 +3813,8 @@ fold (expr)
return build (COMPOUND_EXPR, type, TREE_OPERAND (arg0, 0),
fold (build (code, type, TREE_OPERAND (arg0, 1), arg1)));
else if (TREE_CODE (arg0) == COND_EXPR
- || TREE_CODE_CLASS (TREE_CODE (arg0)) == '<')
+ || (TREE_CODE_CLASS (TREE_CODE (arg0)) == '<'
+ && TREE_CODE_CLASS (code) != '<'))
{
tree test, true_value, false_value;