diff options
author | hubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4> | 2000-07-30 18:13:10 +0000 |
---|---|---|
committer | hubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4> | 2000-07-30 18:13:10 +0000 |
commit | 67405ba4aebe7268e2534b519bb82f5989aaca1b (patch) | |
tree | 3ff42cba89273f5cd54afab8421fa8d28be2414f /gcc/combine.c | |
parent | 2d48cabb29ef43381481200eacc6b578939b5347 (diff) | |
download | gcc-67405ba4aebe7268e2534b519bb82f5989aaca1b.tar.gz |
* simplify-rtx.c (simplify_relational_operation): Verify that mode ==
VOIDmode implies both operands to be VOIDmode.
(simplify_ternary_operation): Compute properly the mode of comparison.
* combine.c (combine_simplify_rtx): Likewise.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@35343 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/combine.c')
-rw-r--r-- | gcc/combine.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/gcc/combine.c b/gcc/combine.c index 6010cb7905c..627f4a18758 100644 --- a/gcc/combine.c +++ b/gcc/combine.c @@ -3639,8 +3639,13 @@ combine_simplify_rtx (x, op0_mode, last, in_dest) temp = simplify_unary_operation (code, mode, XEXP (x, 0), op0_mode); break; case '<': - temp = simplify_relational_operation (code, op0_mode, - XEXP (x, 0), XEXP (x, 1)); + { + enum machine_mode cmp_mode = GET_MODE (XEXP (x, 0)); + if (cmp_mode == VOIDmode) + cmp_mode = GET_MODE (XEXP (x, 1)); + temp = simplify_relational_operation (code, cmp_mode, + XEXP (x, 0), XEXP (x, 1)); + } #ifdef FLOAT_STORE_FLAG_VALUE if (temp != 0 && GET_MODE_CLASS (mode) == MODE_FLOAT) { |