2016-07-11  Marek Polacek  <pola...@redhat.com>

        PR c/7652
        * soft-fp/soft-fp.h (_FP_FALLTHRU): Define.
        * soft-fp/op-common.h: Use it.

diff --git gcc/libgcc/soft-fp/op-common.h gcc/libgcc/soft-fp/op-common.h
index 080ef0e..6691f50 100644
--- gcc/libgcc/soft-fp/op-common.h
+++ gcc/libgcc/soft-fp/op-common.h
@@ -898,6 +898,7 @@
        case _FP_CLS_COMBINE (FP_CLS_NAN, FP_CLS_INF):          \
        case _FP_CLS_COMBINE (FP_CLS_NAN, FP_CLS_ZERO):         \
          R##_s = X##_s;                                        \
+         _FP_FALLTHRU ();                                              \
                                                                \
        case _FP_CLS_COMBINE (FP_CLS_INF, FP_CLS_INF):          \
        case _FP_CLS_COMBINE (FP_CLS_INF, FP_CLS_NORMAL):       \
@@ -911,6 +912,7 @@
        case _FP_CLS_COMBINE (FP_CLS_INF, FP_CLS_NAN):          \
        case _FP_CLS_COMBINE (FP_CLS_ZERO, FP_CLS_NAN):         \
          R##_s = Y##_s;                                        \
+         _FP_FALLTHRU ();                                              \
                                                                \
        case _FP_CLS_COMBINE (FP_CLS_NORMAL, FP_CLS_INF):       \
        case _FP_CLS_COMBINE (FP_CLS_NORMAL, FP_CLS_ZERO):      \
@@ -1198,6 +1200,7 @@
                                                                \
        case _FP_CLS_COMBINE (FP_CLS_NORMAL, FP_CLS_ZERO):      \
          FP_SET_EXCEPTION (FP_EX_DIVZERO);                     \
+         _FP_FALLTHRU ();                                              \
        case _FP_CLS_COMBINE (FP_CLS_INF, FP_CLS_ZERO):         \
        case _FP_CLS_COMBINE (FP_CLS_INF, FP_CLS_NORMAL):       \
          R##_c = FP_CLS_INF;                                   \
diff --git gcc/libgcc/soft-fp/soft-fp.h gcc/libgcc/soft-fp/soft-fp.h
index 3b39336..999b145 100644
--- gcc/libgcc/soft-fp/soft-fp.h
+++ gcc/libgcc/soft-fp/soft-fp.h
@@ -71,6 +71,12 @@
     [!!sizeof (struct { int __error_if_negative: (expr) ? 2 : -1; })]
 #endif
 
+#if (defined __GNUC__ && __GNUC__ >= 7)
+# define _FP_FALLTHRU() __builtin_fallthrough ()
+#else
+# define _FP_FALLTHRU()
+#endif
+
 /* In the Linux kernel, some architectures have a single function that
    uses different kinds of unpacking and packing depending on the
    instruction being emulated, meaning it is not readily visible to

Reply via email to