diff options
author | Richard Smith <richard-llvm@metafoo.co.uk> | 2016-02-12 01:15:33 +0000 |
---|---|---|
committer | Richard Smith <richard-llvm@metafoo.co.uk> | 2016-02-12 01:15:33 +0000 |
commit | 66a7385e275e361b7ca8c4fc0a5942f80105c192 (patch) | |
tree | 90b169130c7504865c30f4242ef0bddc9813861d | |
parent | e8178e8e8fa358e4246a6a68d1c7f13c5e7c7545 (diff) | |
download | bcm5719-llvm-66a7385e275e361b7ca8c4fc0a5942f80105c192.tar.gz bcm5719-llvm-66a7385e275e361b7ca8c4fc0a5942f80105c192.zip |
<float.h>: do not define DECIMAL_DIG in -std=c89 mode; this macro was added in C99.
Patch by Jorge Teixeira!
llvm-svn: 260639
-rw-r--r-- | clang/lib/Headers/float.h | 8 | ||||
-rw-r--r-- | clang/test/Headers/float.c | 26 |
2 files changed, 26 insertions, 8 deletions
diff --git a/clang/lib/Headers/float.h b/clang/lib/Headers/float.h index 50cfdaabafc..a28269ebebb 100644 --- a/clang/lib/Headers/float.h +++ b/clang/lib/Headers/float.h @@ -39,7 +39,9 @@ # undef FLT_MANT_DIG # undef DBL_MANT_DIG # undef LDBL_MANT_DIG -# undef DECIMAL_DIG +# if __STDC_VERSION__ >= 199901L || !defined(__STRICT_ANSI__) +# undef DECIMAL_DIG +# endif # undef FLT_DIG # undef DBL_DIG # undef LDBL_DIG @@ -84,7 +86,9 @@ #define DBL_MANT_DIG __DBL_MANT_DIG__ #define LDBL_MANT_DIG __LDBL_MANT_DIG__ -#define DECIMAL_DIG __DECIMAL_DIG__ +#if __STDC_VERSION__ >= 199901L || !defined(__STRICT_ANSI__) +# define DECIMAL_DIG __DECIMAL_DIG__ +#endif #define FLT_DIG __FLT_DIG__ #define DBL_DIG __DBL_DIG__ diff --git a/clang/test/Headers/float.c b/clang/test/Headers/float.c index f492531f396..32249d1d461 100644 --- a/clang/test/Headers/float.c +++ b/clang/test/Headers/float.c @@ -3,9 +3,15 @@ // RUN: %clang_cc1 -fsyntax-only -verify -std=c11 -ffreestanding %s // expected-no-diagnostics -/* Basic conformance checks against the N1570 draft of C11 Std. */ +/* Basic floating point conformance checks against: + - N1570 draft of C11 Std. + - N1256 draft of C99 Std. + - http://port70.net/~nsz/c/c89/c89-draft.html draft of C89/C90 Std. +*/ /* - 5.2.4.2.2p11, pp. 30 + C11, 5.2.4.2.2p11, pp. 30 + C99, 5.2.4.2.2p9, pp. 25 + C89, 2.2.4.2 */ #include <float.h> @@ -68,10 +74,16 @@ #endif -#ifndef DECIMAL_DIG - #error "Mandatory macro DECIMAL_DIG is missing." -#elif DECIMAL_DIG < 10 - #error "Mandatory macro DECIMAL_DIG is invalid." +#if __STDC_VERSION__ >= 199901L || !defined(__STRICT_ANSI__) + #ifndef DECIMAL_DIG + #error "Mandatory macro DECIMAL_DIG is missing." + #elif DECIMAL_DIG < 10 + #error "Mandatory macro DECIMAL_DIG is invalid." + #endif +#else + #ifdef DECIMAL_DIG + #error "Macro DECIMAL_DIG should not be defined." + #endif #endif @@ -182,7 +194,9 @@ _Static_assert(DBL_DECIMAL_DIG == __DBL_DECIMAL_DIG__, ""); _Static_assert(LDBL_DECIMAL_DIG == __LDBL_DECIMAL_DIG__, ""); #endif +#if __STDC_VERSION__ >= 199901L || !defined(__STRICT_ANSI__) _Static_assert(DECIMAL_DIG == __DECIMAL_DIG__, ""); +#endif _Static_assert(FLT_DIG == __FLT_DIG__, ""); _Static_assert(DBL_DIG == __DBL_DIG__, ""); |