diff options
author | vlefevre <vlefevre@280ebfd0-de03-0410-8827-d642c229c3f4> | 2012-04-26 11:24:54 +0000 |
---|---|---|
committer | vlefevre <vlefevre@280ebfd0-de03-0410-8827-d642c229c3f4> | 2012-04-26 11:24:54 +0000 |
commit | 855453a2b0dbf387cbee56a119b3873c837f5e8b (patch) | |
tree | 42bc77b29228094b43850a23288132cf37e21c69 /src/mpfr-impl.h | |
parent | 68e38b64b657b9b450c700bebde98075566e4bdd (diff) | |
download | mpfr-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.h | 16 |
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 |