This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: New no-undefined-overflow branch
On Fri, 6 Mar 2009, Paolo Bonzini wrote:
> Joseph S. Myers wrote:
> > On Fri, 6 Mar 2009, Geert Bosch wrote:
> >
> >>> this task may be more difficult. So lowering them early during
> >>> gimplification looks like a more reasonable plan IMHO.
> >> Right, that was my intention. Still, I'll need to add code to
> >> handle the new tree codes in fold(), right?
> >
> > If you add new trapping codes to GENERIC I'd recommend *not* making fold()
> > handle them.
>
> Constant folding should be done for them, though.
Yes, constant folding should be done, so that very tiny subset of fold
needs to handle them. The vast bulk of fold that does other more
complicated transformations should not, in my view. (There may be
isolated transformations that are safe for these codes. For example, you
could transform (x *trap 2) *trap 2 to x *trap 4 (this is a case where two
traps can become one), but not (x *trap 2) *trap 0 to x *trap 0 or (x
*trap -1) *trap -1 to x *trap 1. I think however it would be reasonable
to replace -ftrapv without going through all fold transformations to
enable the safe ones for the new tree codes; it's better to start by
making it reliable and then look at cases where it can be made to generate
better code. And I expect that a large proportion of what fold does is
not safe for trapping codes.)
--
Joseph S. Myers
joseph@codesourcery.com