]> granicus.if.org Git - clang/commitdiff
<float.h>: do not define DECIMAL_DIG in -std=c89 mode; this macro was added in C99.
authorRichard Smith <richard-llvm@metafoo.co.uk>
Fri, 12 Feb 2016 01:15:33 +0000 (01:15 +0000)
committerRichard Smith <richard-llvm@metafoo.co.uk>
Fri, 12 Feb 2016 01:15:33 +0000 (01:15 +0000)
Patch by Jorge Teixeira!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@260639 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Headers/float.h
test/Headers/float.c

index 50cfdaabafcca1ffa351e465fb90e8171488b72e..a28269ebebbe32171649ba8c9799fa1ce797bd52 100644 (file)
@@ -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__
index f492531f396e37c9eb4f68e52d4891530c4556e2..32249d1d461d920dd2de9ec2a8c2d9317669014b 100644 (file)
@@ -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>
 
 #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__, "");