diff options
author | Alexandre Oliva <aoliva@redhat.com> | 2000-08-23 07:59:06 +0000 |
---|---|---|
committer | Alexandre Oliva <aoliva@gcc.gnu.org> | 2000-08-23 07:59:06 +0000 |
commit | 95d0e5f1d0700a332288d362070d299cc0d255ee (patch) | |
tree | 1294c08505b338de79848554558b174e66875576 /gcc | |
parent | f17eb5d40feeda80aa1e7e6251ff61571958a2ac (diff) | |
download | gcc-95d0e5f1d0700a332288d362070d299cc0d255ee.zip gcc-95d0e5f1d0700a332288d362070d299cc0d255ee.tar.gz gcc-95d0e5f1d0700a332288d362070d299cc0d255ee.tar.bz2 |
simplify-rtx.c (simplify_rtx): Don't pass VOIDmode to simplify_relational_operation() unless...
* simplify-rtx.c (simplify_rtx): Don't pass VOIDmode to
simplify_relational_operation() unless both operands are of
VOIDmode.
* cse.c (fold_rtx): Likewise.
From-SVN: r35904
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/cse.c | 14 | ||||
-rw-r--r-- | gcc/simplify-rtx.c | 7 |
3 files changed, 25 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index cef5759..33096a3 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +Wed Aug 23 04:55:48 2000 Alexandre Oliva <aoliva@redhat.com> + + * simplify-rtx.c (simplify_rtx): Don't pass VOIDmode to + simplify_relational_operation() unless both operands are of + VOIDmode. + * cse.c (fold_rtx): Likewise. + Tue Aug 22 23:53:27 EDT 2000 John Wehle (john@feith.com) * rtlanal.c (rtx_unstable_p): The pic register is stable @@ -3858,7 +3858,19 @@ fold_rtx (x, insn) } } - new = simplify_relational_operation (code, mode_arg0, + new = simplify_relational_operation (code, + (mode_arg0 != VOIDmode + ? mode_arg0 + : (GET_MODE (const_arg0 + ? const_arg0 + : folded_arg0) + != VOIDmode) + ? GET_MODE (const_arg0 + ? const_arg0 + : folded_arg0) + : GET_MODE (const_arg1 + ? const_arg1 + : folded_arg1)), const_arg0 ? const_arg0 : folded_arg0, const_arg1 ? const_arg1 : folded_arg1); #ifdef FLOAT_STORE_FLAG_VALUE diff --git a/gcc/simplify-rtx.c b/gcc/simplify-rtx.c index e97e7b7..701b7ba 100644 --- a/gcc/simplify-rtx.c +++ b/gcc/simplify-rtx.c @@ -1694,7 +1694,7 @@ simplify_relational_operation (code, mode, op0, op1) if (mode == VOIDmode && (GET_MODE (op0) != VOIDmode || GET_MODE (op1) != VOIDmode)) - abort(); + abort (); /* If op0 is a compare, extract the comparison arguments from it. */ if (GET_CODE (op0) == COMPARE && op1 == const0_rtx) @@ -2091,7 +2091,10 @@ simplify_rtx (x) XEXP (x, 0), XEXP (x, 1), XEXP (x, 2)); case '<': - return simplify_relational_operation (code, GET_MODE (XEXP (x, 0)), + return simplify_relational_operation (code, + (GET_MODE (XEXP (x, 0)) != VOIDmode + ? GET_MODE (XEXP (x, 0)) + : GET_MODE (XEXP (x, 1))), XEXP (x, 0), XEXP (x, 1)); default: return NULL; |