[PATCH] Trapping math and libfuncs improvements

Hal Finkel hfinkel at anl.gov
Fri Sep 6 08:27:41 PDT 2013


Ben, Chad, et al.,

The attached patch cleans up the LIBBUILTIN libm function definitions, and improves the way in which -ftrapping-math is handled in a complementary way. Specifically, this patch:

 1. The libm LIBBUILTIN definitions are synchronized with the __builtin_* definitions for libm functions. We currently have __builtin_* definitions for many more functions than those for which we have LIBBUILTIN definitions. This unnecessarily pessimizes code generation around many of the remaining libm functions.

 2. Many of these functions can be marked as readnone so long as we can neglect floating point exceptions. I've added a new specifier 'T', which like 'e' for errno, marks the builtin as const so long as trapping math is disabled. I've added a TrappingMath lang option to track this.

 3. Disables -ftrapping-math by default. This is currently enabled by default (following gcc), but this is silly. No system of which I'm aware actually traps on floating-point exceptions by default (some system-specific mechanism is necessary in order to enable SIGFPE generation). In addition, in Clang, we currently don't support fenv access. As a result, we can turn this off by default (and enable better code generation around the functions for which we have LIBBUILTIN definitions).

 4. Updates the CodeGen/libcall-declarations.c test case.

As a side effect, the existing libm LIBBUILTIN definitions that were missing the 'n' (nothrow) specifier now have it.

Please review.

Thanks in advance,
Hal

-- 
Hal Finkel
Assistant Computational Scientist
Leadership Computing Facility
Argonne National Laboratory
-------------- next part --------------
A non-text attachment was scrubbed...
Name: math-libfuncs-trapping.patch
Type: text/x-patch
Size: 72276 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20130906/cfd9bd86/attachment.bin>


More information about the cfe-commits mailing list