This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Ada front-end depends on signed overflow


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.





Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]