> > -ftrapv is not practically usable because (1) it generates awful code and
> > (2) it badly interacts with the RTL optimizers.
>
> please before you say this compare it with the truly awful front end
> code we generate, which for sure inteferes badly with the optimizers.
Right, the code generated by the front end is not pretty either, but at least
the front-end knows what it is doing Ada-wise. -ftrapv is so dumb at the
moment that it emits checks for virtually anything.
As for the interaction with the optimizers:
int foo(int a, int b)
{
return a + b;
}
gcc -S -O -ftrapv on SPARC:
foo:
jmp %o7+8
add %o0, %o1, %o0
.size foo, .-foo
.ident "GCC: (GNU) 4.1.0 20050604 (experimental)"
And I have a slightly more contrived example with the same problem at -O0!
I think we cannot use -ftrapv alone for Ada because it is too low-level. Its
general mechanism certainly can help (once it is fixed) but it must be driven
by something more Ada-aware.
--
Eric Botcazou