This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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)));
 


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]