summaryrefslogtreecommitdiff
path: root/src/mpfr-impl.h
diff options
context:
space:
mode:
authorvlefevre <vlefevre@280ebfd0-de03-0410-8827-d642c229c3f4>2012-04-26 11:24:54 +0000
committervlefevre <vlefevre@280ebfd0-de03-0410-8827-d642c229c3f4>2012-04-26 11:24:54 +0000
commit855453a2b0dbf387cbee56a119b3873c837f5e8b (patch)
tree42bc77b29228094b43850a23288132cf37e21c69 /src/mpfr-impl.h
parent68e38b64b657b9b450c700bebde98075566e4bdd (diff)
downloadmpfr-855453a2b0dbf387cbee56a119b3873c837f5e8b.tar.gz
[src/mpfr-impl.h] Improved the noreturn feature.
git-svn-id: svn://scm.gforge.inria.fr/svn/mpfr/trunk@8157 280ebfd0-de03-0410-8827-d642c229c3f4
Diffstat (limited to 'src/mpfr-impl.h')
-rw-r--r--src/mpfr-impl.h16
1 files changed, 13 insertions, 3 deletions
diff --git a/src/mpfr-impl.h b/src/mpfr-impl.h
index 61211cfa7..163631e06 100644
--- a/src/mpfr-impl.h
+++ b/src/mpfr-impl.h
@@ -228,9 +228,19 @@ typedef __gmp_const mp_limb_t *mpfr_limb_srcptr;
/* _Noreturn is specified by ISO C11 (Section 6.7.4);
in GCC, it is supported as of version 4.7. */
# define MPFR_NORETURN _Noreturn
-#elif __MPFR_GNUC(3,0) || __MPFR_ICC(8,1,0)
-# define MPFR_NORETURN __attribute__ ((noreturn))
-#else
+#elif !defined(noreturn)
+/* A noreturn macro could be defined if <stdnoreturn.h> has been included,
+ in which case it would make sense to #define MPFR_NORETURN noreturn.
+ But this is unlikely, as MPFR_HAVE_NORETURN should have been defined
+ in such a case. So, in doubt, let us avoid any code that would use a
+ noreturn macro, since it could be invalid. */
+# if __MPFR_GNUC(3,0) || __MPFR_ICC(8,1,0)
+# define MPFR_NORETURN __attribute__ ((noreturn))
+# elif defined(_MSC_VER) && defined(_WIN32) && (_MSC_VER >= 1200)
+# define MPFR_NORETURN __declspec (noreturn)
+# endif
+#endif
+#ifndef MPFR_NORETURN
# define MPFR_NORETURN
#endif