On Tue, Nov 20, 2012 at 11:46:06AM -0600, Aldy Hernandez wrote:
> The problem here is that the SLSR pass is promoting a
> POINTER_PLUS_EXPR to a PLUS_EXPR.  Since pointer arithmetic is
> invalid in {PLUS,MINUS}_EXPR's, the gimple verifier chokes on the
> invalid statement.
> 
> Fixed by maintaining the POINTER_PLUS_EXPR when appropriate.
> 
> OK for trunk?

Ok, thanks.

> -  if (bump.is_negative ())
> +  if (bump.is_negative ()
> +      && cand_code != POINTER_PLUS_EXPR)
>      {
>        code = MINUS_EXPR;
>        bump = -bump;

I wonder if this isn't unsafe even when bump is the shwi minimum
(say LONG_MIN for LP64 target/64-bit HWI).  But sure, it is preexisting
code, so perhaps something for Bill to look at later.

        Jakub

Reply via email to