This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: New no-undefined-overflow branch
Joseph S. Myers wrote:
> On Fri, 6 Mar 2009, Paolo Bonzini wrote:
>
>> I don't think you need to introduce trapping tree codes. You can
>> introduce them directly in the front-end as
>
> Multiple front ends want the same thing. This is why it would be better
> to introduce the codes in GENERIC and have the language-independent
> gimplifier contain the code to lower them, even if they don't become part
> of GIMPLE.
I see your point. What I'm worried of, is that this codes would be
tested more lightly and, until folding is a middle-end thing only, the
risk of unwanted optimization on -ftrapv code would be high.
You can have common code shared by front-ends. They could apply it at
GENERICization time (Fortran, Ada) or directly while parsing (C, C++).
>> (int)((long long) a * (long long) b) == a *nv b ? trap () : a *nv b
>
> This is not a solution for trapping multiplication in the widest supported
> type.
There's always range checking, I was pointing out optimization
possibilities; the above one can be optimized like
(h,l) = a*b
if (h != l >> 31) trap (); // signed shift
Paolo