diff options
| author | Louis Dionne <ldionne@apple.com> | 2019-02-13 19:08:01 +0000 |
|---|---|---|
| committer | Louis Dionne <ldionne@apple.com> | 2019-02-13 19:08:01 +0000 |
| commit | defa9f8f85cf72d207e9c13849a8513abda4461e (patch) | |
| tree | 4b94eb2e56e29701b1787350ae74870b8cc72081 | |
| parent | acf81a7c149f7c2c6a987f1d2cabbd6ed39e8804 (diff) | |
| download | bcm5719-llvm-defa9f8f85cf72d207e9c13849a8513abda4461e.tar.gz bcm5719-llvm-defa9f8f85cf72d207e9c13849a8513abda4461e.zip | |
[clang] Make sure C99/C11 features in <float.h> are provided in C++11
Summary:
Previously, those #defines were only provided in C or when GNU extensions were
enabled. We need those #defines in C++11 and above, too.
Reviewers: jfb, eli.friedman
Subscribers: jkorous, dexonsmith, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D58149
llvm-svn: 353970
| -rw-r--r-- | clang/lib/Headers/float.h | 8 | ||||
| -rw-r--r-- | clang/test/Headers/float.c | 13 |
2 files changed, 12 insertions, 9 deletions
diff --git a/clang/lib/Headers/float.h b/clang/lib/Headers/float.h index 56215cd624d..92bddee2f6e 100644 --- a/clang/lib/Headers/float.h +++ b/clang/lib/Headers/float.h @@ -51,7 +51,7 @@ # undef FLT_MANT_DIG # undef DBL_MANT_DIG # undef LDBL_MANT_DIG -# if __STDC_VERSION__ >= 199901L || !defined(__STRICT_ANSI__) +# if __STDC_VERSION__ >= 199901L || !defined(__STRICT_ANSI__) || __cplusplus >= 201103L # undef DECIMAL_DIG # endif # undef FLT_DIG @@ -78,7 +78,7 @@ # undef FLT_MIN # undef DBL_MIN # undef LDBL_MIN -# if __STDC_VERSION__ >= 201112L || !defined(__STRICT_ANSI__) +# if __STDC_VERSION__ >= 201112L || !defined(__STRICT_ANSI__) || __cplusplus >= 201103L # undef FLT_TRUE_MIN # undef DBL_TRUE_MIN # undef LDBL_TRUE_MIN @@ -101,7 +101,7 @@ #define DBL_MANT_DIG __DBL_MANT_DIG__ #define LDBL_MANT_DIG __LDBL_MANT_DIG__ -#if __STDC_VERSION__ >= 199901L || !defined(__STRICT_ANSI__) +#if __STDC_VERSION__ >= 199901L || !defined(__STRICT_ANSI__) || __cplusplus >= 201103L # define DECIMAL_DIG __DECIMAL_DIG__ #endif @@ -137,7 +137,7 @@ #define DBL_MIN __DBL_MIN__ #define LDBL_MIN __LDBL_MIN__ -#if __STDC_VERSION__ >= 201112L || !defined(__STRICT_ANSI__) +#if __STDC_VERSION__ >= 201112L || !defined(__STRICT_ANSI__) || __cplusplus >= 201103L # define FLT_TRUE_MIN __FLT_DENORM_MIN__ # define DBL_TRUE_MIN __DBL_DENORM_MIN__ # define LDBL_TRUE_MIN __LDBL_DENORM_MIN__ diff --git a/clang/test/Headers/float.c b/clang/test/Headers/float.c index 74ebb8437f1..4f38725e27b 100644 --- a/clang/test/Headers/float.c +++ b/clang/test/Headers/float.c @@ -1,6 +1,9 @@ // RUN: %clang_cc1 -fsyntax-only -verify -std=c89 -ffreestanding %s // RUN: %clang_cc1 -fsyntax-only -verify -std=c99 -ffreestanding %s // RUN: %clang_cc1 -fsyntax-only -verify -std=c11 -ffreestanding %s +// RUN: %clang_cc1 -fsyntax-only -verify -xc++ -std=c++11 -ffreestanding %s +// RUN: %clang_cc1 -fsyntax-only -verify -xc++ -std=c++14 -ffreestanding %s +// RUN: %clang_cc1 -fsyntax-only -verify -xc++ -std=c++17 -ffreestanding %s // expected-no-diagnostics /* Basic floating point conformance checks against: @@ -11,7 +14,7 @@ /* C11, 5.2.4.2.2p11, pp. 30 C99, 5.2.4.2.2p9, pp. 25 - C89, 2.2.4.2 + C89, 2.2.4.2 */ #include <float.h> @@ -42,7 +45,7 @@ #endif -#if __STDC_VERSION__ >= 201112L || !defined(__STRICT_ANSI__) +#if __STDC_VERSION__ >= 201112L || !defined(__STRICT_ANSI__) || __cplusplus >= 201103L #ifndef FLT_DECIMAL_DIG #error "Mandatory macro FLT_DECIMAL_DIG is missing." #elif FLT_DECIMAL_DIG < 6 @@ -98,7 +101,7 @@ #endif -#if __STDC_VERSION__ >= 199901L || !defined(__STRICT_ANSI__) +#if __STDC_VERSION__ >= 199901L || !defined(__STRICT_ANSI__) || __cplusplus >= 201103L #ifndef DECIMAL_DIG #error "Mandatory macro DECIMAL_DIG is missing." #elif DECIMAL_DIG < 10 @@ -212,13 +215,13 @@ _Static_assert(FLT_MANT_DIG == __FLT_MANT_DIG__, ""); _Static_assert(DBL_MANT_DIG == __DBL_MANT_DIG__, ""); _Static_assert(LDBL_MANT_DIG == __LDBL_MANT_DIG__, ""); -#if __STDC_VERSION__ >= 201112L || !defined(__STRICT_ANSI__) +#if __STDC_VERSION__ >= 201112L || !defined(__STRICT_ANSI__) || __cplusplus >= 201103L _Static_assert(FLT_DECIMAL_DIG == __FLT_DECIMAL_DIG__, ""); _Static_assert(DBL_DECIMAL_DIG == __DBL_DECIMAL_DIG__, ""); _Static_assert(LDBL_DECIMAL_DIG == __LDBL_DECIMAL_DIG__, ""); #endif -#if __STDC_VERSION__ >= 199901L || !defined(__STRICT_ANSI__) +#if __STDC_VERSION__ >= 199901L || !defined(__STRICT_ANSI__) || __cplusplus >= 201103L _Static_assert(DECIMAL_DIG == __DECIMAL_DIG__, ""); #endif |

