Ada front-end depends on signed overflow
Robert Dewar
dewar@adacore.com
Sun Jun 5 12:50:00 GMT 2005
Eric Botcazou wrote:
>>>-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.
No, it just emits it for signed operations. If we use -ftrapv, then we have
to make sure that operations labeled by the front end as not requiring an
overflow check are transformed into unsigned operations by gigi.
>
> 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 don't see that's so terrible, the jmp will be free in practice anyway
so I don't think you will find this slows things down.
>
>
> 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.
Again, please compare it with the simply awful mechanism used by the
front end right now.
>
More information about the Gcc
mailing list