This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH] Fix PR 8639 (3.2.1 material)
On Wed, Nov 20, 2002 at 01:30:45PM +0100, Christian Ehrhardt wrote:
> On Wed, Nov 20, 2002 at 06:44:01AM +0000, Neil Booth wrote:
> > Christian Ehrhardt wrote:-
> > > [ ... ]
> > Please following the coding style of the surrounding code; && goes on
> > the new line.
>
> Ok, here's an updated version that also fixes the comment. It should
> be functionally the same as the previous version that bootstrapped ok.
Famouse last words. It isn't the same. Currected version that actually
compiles below.
regards Christian (Now wearing a brown paper bag)
--- gcc-3.2.1-20021111/gcc/fold-const.c.orig Tue Nov 19 18:47:57 2002
+++ gcc-3.2.1-20021111/gcc/fold-const.c Wed Nov 20 13:42:30 2002
@@ -4617,10 +4617,11 @@
t2 = extract_muldiv (op1, c, code, wide_type);
if (t1 != 0 && t2 != 0
&& (code == MULT_EXPR
- /* If not multiplication, we can only do this if either operand
- is divisible by c. */
- || multiple_of_p (ctype, op0, c)
- || multiple_of_p (ctype, op1, c)))
+ /* If not multiplication, we can only do this if both
+ operands are divisible by c. Note that (80 + 4*x)/20
+ must not degenerate into (20 + x/5). */
+ || (multiple_of_p (ctype, op0, c)
+ && multiple_of_p (ctype, op1, c))))
return fold (build (tcode, ctype, convert (ctype, t1),
convert (ctype, t2)));