aboutsummaryrefslogtreecommitdiff
path: root/soft-fp/op-common.h
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2015-03-11 01:14:15 +0000
committerJoseph Myers <joseph@codesourcery.com>2015-03-11 01:14:34 +0000
commit068a6274556f9f362443648f4fd47525c8cf2dba (patch)
treeabf011f3003985f34b109d3dbfdb96c934336a17 /soft-fp/op-common.h
parent44a6213c8eebf3f69712a5fba9a33bbb90a79023 (diff)
downloadglibc-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.h8
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)