------- Comment #23 from rakdver at atrey dot karlin dot mff dot cuni dot cz  
2007-01-09 23:49 -------
Subject: Re:  gfortran miscompiled

> So I'm wondering, does:
> 
> Doing diffs in .:
> --- ./tree-ssa-address.c.~1~    2006-12-22 21:07:11.000000000 -0800
> +++ ./tree-ssa-address.c        2007-01-09 15:30:42.000000000 -0800
> @@ -483,7 +483,7 @@ addr_to_parts (aff_tree *addr, tree type
>      {
>        part = fold_convert (type, addr->elts[i].val);
>        if (!double_int_one_p (addr->elts[i].coef))
> -       part = fold_build2 (MULT_EXPR, type, part,
> +       part = fold_build2 (MULT_EXPR, type, convert (sizetype, part),
>                             double_int_to_tree (type, addr->elts[i].coef));
>        add_to_parts (parts, type, part);
>      }
> --------------
> 
> fix this bug?  If so, why is that not the right patch?  With it, I get:

no, it does not, you still have

>   D.1696_2 = (long unsigned int) n_28;
>   D.1697_3 = D.1696_2 * 4294967292B;

this multiplication by a pointer constant.  There are several more
places where such a MULT_EXPR's can be created.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29516

Reply via email to