Ping: [PATCH] PR 30315 Canonicalize overflow checks in simplify-rtx.c

Rask Ingemann Lambertsen rask@sygehus.dk
Mon Sep 10 10:40:00 GMT 2007


On Mon, Sep 10, 2007 at 02:55:06AM +0200, Hans-Peter Nilsson wrote:
> > Date: Thu, 6 Sep 2007 12:40:46 +0200
> > From: Rask Ingemann Lambertsen <rask@sygehus.dk>
> 
> > > Index: gcc/simplify-rtx.c
> > > ===================================================================
> > > --- gcc/simplify-rtx.c	(revision 127838)
> > > +++ gcc/simplify-rtx.c	(working copy)
> > > @@ -3722,6 +3722,12 @@ simplify_relational_operation_1 (enum rt
> > >  	}
> > >      }
> > >  
> > > +  /* Canonicalize (LTU/GEU (PLUS a b) b) as (LTU/GEU (PLUS a b) a).  */
> > > +  if ((code == LTU || code == GEU)
> > > +      && GET_CODE (op0) == PLUS
> > > +      && rtx_equal_p (op1, XEXP (op0, 1)))
> > > +    return simplify_gen_relational (code, mode, cmp_mode, op0, XEXP (op0, 0));
> > > +
> > >    if (op1 == const0_rtx)
> 
> Uhm, you need to add  "&& !rtx_equal_p (op1, XEXP (op0, 0))"
> or you'll get an infinite recursions trying to simplify
> 
>  (LTU (plus:SI (reg:SI 81) (reg:SI 81))
>       (reg:SI 81))

   Looks right to me. I'll test that and commit if it passes.
 
> which happens for cris-elf, compiling
> libstdc++-v3/testsuite/util/testsuite_abi.cc at the beginning of
> the test-run.

   I usually test on cris-axis-elf also, but I got a build failure in
libstdc++. I think that might have been a problem at my end, though.

-- 
Rask Ingemann Lambertsen



More information about the Gcc-patches mailing list