[PATCH][4.3] Deprecate -ftrapv
Richard Guenther
rguenther@suse.de
Sat Mar 1 13:50:00 GMT 2008
On Sat, 1 Mar 2008, Joseph S. Myers wrote:
> On Sat, 1 Mar 2008, Richard Guenther wrote:
>
> > > You also need to deal with fold, which will optimize away potentially
> > > trapping computations with -ftrapv and runs before gimplification
> > > (possibly in association with making fold run at gimplification time and
> > > not before).
> >
> > It should not - at least we have various tests in place to ensure fold
> > does not remove traps nor insert traps. Of course this is a very badly
> > tested part of the compiler, so possibly both may happen.
>
> But arbitrary arithmetic expressions aren't marked as potentially trapping
> / having side-effects with -ftrapv, so cases such as
>
> int f(int a, int b) { return 0 * (a + b); }
>
> get the potentially trapping arithmetic folded away. If -ftrapv is to
> have properly defined semantics, those must include trapping if (a + b)
> overflows in the above code.
Sure, the only clean way to do this is to introduce new tree codes for
trapping arithmetic. Then the usual mechanisms of omit_one_operand
and friends like tree_could_trap_p can work. VRP can for example then
optimize trapping codes to non-trapping codes.
Richard.
More information about the Gcc-patches
mailing list