diff options
author | Joseph Myers <joseph@codesourcery.com> | 2015-03-11 01:14:15 +0000 |
---|---|---|
committer | Joseph Myers <joseph@codesourcery.com> | 2015-03-11 01:14:34 +0000 |
commit | 068a6274556f9f362443648f4fd47525c8cf2dba (patch) | |
tree | abf011f3003985f34b109d3dbfdb96c934336a17 /soft-fp/op-common.h | |
parent | 44a6213c8eebf3f69712a5fba9a33bbb90a79023 (diff) | |
download | glibc-068a6274556f9f362443648f4fd47525c8cf2dba.tar glibc-068a6274556f9f362443648f4fd47525c8cf2dba.tar.gz glibc-068a6274556f9f362443648f4fd47525c8cf2dba.tar.bz2 glibc-068a6274556f9f362443648f4fd47525c8cf2dba.zip |
soft-fp: Add _FP_UNREACHABLE.
This patch makes soft-fp use a new macro _FP_UNREACHABLE in place of
calling abort in unreachable default cases of switch statements.
_FP_UNREACHABLE expands to call __builtin_unreachable for GCC 4.5 and
later; the fallback to abort is thus only for kernel use.
Tested for powerpc-nofpu that installed stripped shared libraries are
unchanged by this patch. Also tested with the math/ tests for mips64
(in the case of fma there *was* previously an abort call generated,
unlike for the other operations - one switch only deals with a subset
of classes for one operand based on what could have been generated in
the earlier part of fma, whereas the other switches deal with all
combinations of two classes - and this is apparently too complicated
for the default case to have been optimized away).
* soft-fp/soft-fp.h (_FP_UNREACHABLE): New macro.
* soft-fp/op-common.h (_FP_MUL): Use _FP_UNREACHABLE instead of
abort.
(_FP_FMA): Likewise.
(_FP_DIV): Likewise.
Diffstat (limited to 'soft-fp/op-common.h')
-rw-r--r-- | soft-fp/op-common.h | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/soft-fp/op-common.h b/soft-fp/op-common.h index 0a2f86aad9..83c2156954 100644 --- a/soft-fp/op-common.h +++ b/soft-fp/op-common.h @@ -927,7 +927,7 @@ break; \ \ default: \ - abort (); \ + _FP_UNREACHABLE; \ } \ } \ while (0) @@ -1092,7 +1092,7 @@ break; \ \ default: \ - abort (); \ + _FP_UNREACHABLE; \ } \ \ /* T = X * Y is zero, infinity or NaN. */ \ @@ -1148,7 +1148,7 @@ break; \ \ default: \ - abort (); \ + _FP_UNREACHABLE; \ } \ done_fma: ; \ } \ @@ -1215,7 +1215,7 @@ break; \ \ default: \ - abort (); \ + _FP_UNREACHABLE; \ } \ } \ while (0) |