Commit 4f61b3b7 by Roger Sayle Committed by Roger Sayle

combine.c (combine_simplify_rtx): Don't convert -(A*B) into (-A)*B if we care…

combine.c (combine_simplify_rtx): Don't convert -(A*B) into (-A)*B if we care about sign-dependent rounding.


	* combine.c (combine_simplify_rtx): Don't convert -(A*B) into
	(-A)*B if we care about sign-dependent rounding.

From-SVN: r71178
parent ae53e5bc
2003-09-07 Roger Sayle <roger@eyesopen.com>
* combine.c (combine_simplify_rtx): Don't convert -(A*B) into
(-A)*B if we care about sign-dependent rounding.
2003-09-07 Gabriel Dos Reis <gcc@integrable-solutions.net>
* c-pretty-print.h (pp_c_left_brace): Declare.
......
......@@ -3970,14 +3970,16 @@ combine_simplify_rtx (rtx x, enum machine_mode op0_mode, int last,
/* (neg (mult A B)) becomes (mult (neg A) B).
This works even for floating-point values. */
if (GET_CODE (XEXP (x, 0)) == MULT)
if (GET_CODE (XEXP (x, 0)) == MULT
&& !HONOR_SIGN_DEPENDENT_ROUNDING (mode))
{
temp = simplify_gen_unary (NEG, mode, XEXP (XEXP (x, 0), 0), mode);
return gen_binary (MULT, mode, temp, XEXP (XEXP (x, 0), 1));
}
/* (neg (xor A 1)) is (plus A -1) if A is known to be either 0 or 1. */
if (GET_CODE (XEXP (x, 0)) == XOR && XEXP (XEXP (x, 0), 1) == const1_rtx
if (GET_CODE (XEXP (x, 0)) == XOR
&& XEXP (XEXP (x, 0), 1) == const1_rtx
&& nonzero_bits (XEXP (XEXP (x, 0), 0), mode) == 1)
return gen_binary (PLUS, mode, XEXP (XEXP (x, 0), 0), constm1_rtx);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment