On 07/24/14 03:35, Richard Biener wrote:

The following fixes one of the most annoying parts of non-working -ftrapv,
namely that we only support >= word_mode trappings (quite annoying on
64bit archs where 'int' is not handled).  At least on x86_64 libgcc
has all the libfuncs available for SImode so the following patch
arranges for them to be used.  RFC because I don't know whether
they are there by accident... (and thus the patch adds a requirement
that is not met by other targets - but a link error is better than
-ftrapv failure?)

The testcase relies on fork() to be able to capture both inline
and out-of-line trapv sequences.  dg-require-fork is unused but
present, so I use it.  I suppose we can restrict the testcase
to a few targets manually as well - not sure, any preferences?

At least the obvious testcase from PR52478 now works (until
you hit constant folding ... see PR61893 I just opened).

Bootstrap and regtest running on x86_64-unknown-linux-gnu, ok
for trunk?

Thanks,
Richard.


2014-07-24  Richard Biener  <rguent...@suse.de>

        PR middle-end/52478
        * optabs.c (gen_int_libfunc): For -ftrapv libfuncs make
        sure to register SImode ones, not only >= word_mode ones.
        * expr.c (expand_expr_real_2): When expanding -ftrapv
        binops do not use OPTAB_LIB_WIDEN.

        * gcc.dg/torture/ftrapv-1.c: New testcase.
I'm certainly comfortable requiring more bits in libgcc (which are often going to be there anyway) to get -ftrapv to work.

I'd be a little worried the testcase won't work on simulated targets. Perhaps limit it to native only? I'd consider this is relatively minor issue and not enough to hold up the patch.

jeff

Reply via email to