Richard Guenther wrote: > [PR c/51527] > > I think the fix would be sth like > > Index: gcc/convert.c > =================================================================== > --- gcc/convert.c (revision 186871) > +++ gcc/convert.c (working copy) > @@ -769,6 +769,7 @@ convert_to_integer (tree type, tree expr > (Otherwise would recurse infinitely in convert. */ > if (TYPE_PRECISION (typex) != inprec) > { > + tree otypex = typex; > /* Don't do unsigned arithmetic where signed was wanted, > or vice versa. > Exception: if both of the original operands were > @@ -806,10 +807,11 @@ convert_to_integer (tree type, tree expr > typex = unsigned_type_for (typex); > else > typex = signed_type_for (typex); > - return convert (type, > - fold_build2 (ex_form, typex, > - convert (typex, arg0), > - convert (typex, arg1))); > + if (TYPE_PRECISION (otypex) == TYPE_PRECISION (typex)) > + return convert (type, > + fold_build2 (ex_form, typex, > + convert (typex, arg0), > + convert (typex, arg1))); > } > } > }
Thanks for the patch. I bootstrapped and regression-tested on i686-pc-linux-gnu. If it's ok with you I'd go ahead and install it. And maybe Peter could tell if it also fixes the issue on his platform. Johann