diff options
-rw-r--r-- | clang/lib/Headers/float.h | 7 | ||||
-rw-r--r-- | clang/test/Headers/Inputs/usr/include/float.h | 6 | ||||
-rw-r--r-- | clang/test/Headers/float-darwin.c | 13 |
3 files changed, 24 insertions, 2 deletions
diff --git a/clang/lib/Headers/float.h b/clang/lib/Headers/float.h index a28269ebebb..0f453d87cbc 100644 --- a/clang/lib/Headers/float.h +++ b/clang/lib/Headers/float.h @@ -27,9 +27,12 @@ /* If we're on MinGW, fall back to the system's float.h, which might have * additional definitions provided for Windows. * For more details see http://msdn.microsoft.com/en-us/library/y0ybw9fy.aspx + * + * Also fall back on Darwin to allow additional definitions and + * implementation-defined values. */ -#if (defined(__MINGW32__) || defined(_MSC_VER)) && __STDC_HOSTED__ && \ - __has_include_next(<float.h>) +#if (defined(__APPLE__) || (defined(__MINGW32__) || defined(_MSC_VER))) && \ + __STDC_HOSTED__ && __has_include_next(<float.h>) # include_next <float.h> /* Undefine anything that we'll be redefining below. */ diff --git a/clang/test/Headers/Inputs/usr/include/float.h b/clang/test/Headers/Inputs/usr/include/float.h new file mode 100644 index 00000000000..9dab891b972 --- /dev/null +++ b/clang/test/Headers/Inputs/usr/include/float.h @@ -0,0 +1,6 @@ +#ifndef SYSFLOAT_H +#define SYSFLOAT_H + +#define FLT_HAS_SUBNORM 1 + +#endif /* SYSFLOAT_H */ diff --git a/clang/test/Headers/float-darwin.c b/clang/test/Headers/float-darwin.c new file mode 100644 index 00000000000..54bac1ac630 --- /dev/null +++ b/clang/test/Headers/float-darwin.c @@ -0,0 +1,13 @@ +// REQUIRES: system-darwin +// RUN: %clang -target x86_64-apple-darwin10 -fsyntax-only -std=c11 -isysroot %S/Inputs %s +#include <float.h> + +// Test the #include_next on float.h works on Darwin. +#ifndef FLT_HAS_SUBNORM + #error "FLT_HAS_SUBNORM not defined" +#endif + +// Test that definition from builtin are also present. +#ifndef FLT_MAX + #error "FLT_MAX not defined" +#endif |