diff options
author | Jan Hubicka <jh@suse.cz> | 2000-07-30 18:13:10 +0000 |
---|---|---|
committer | Jan Hubicka <hubicka@gcc.gnu.org> | 2000-07-30 18:13:10 +0000 |
commit | 47b1e19b64b76712bd3cf26c39b46d0937347f19 (patch) | |
tree | 3ff42cba89273f5cd54afab8421fa8d28be2414f /gcc/combine.c | |
parent | c34d53740af2d85e6f9bfbd1f7593aba0ea1cae4 (diff) | |
download | gcc-47b1e19b64b76712bd3cf26c39b46d0937347f19.zip gcc-47b1e19b64b76712bd3cf26c39b46d0937347f19.tar.gz gcc-47b1e19b64b76712bd3cf26c39b46d0937347f19.tar.bz2 |
simplify-rtx.c (simplify_relational_operation): Verify that mode == VOIDmode implies both operands to be VOIDmode.
* 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.
From-SVN: r35343
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 6010cb7..627f4a1 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) { |