summaryrefslogtreecommitdiffstats
path: root/clang
diff options
context:
space:
mode:
authorBruno Cardoso Lopes <bruno.cardoso@gmail.com>2016-12-08 02:13:56 +0000
committerBruno Cardoso Lopes <bruno.cardoso@gmail.com>2016-12-08 02:13:56 +0000
commitd93779da151a46532353c07b704b8e569ed1c81a (patch)
tree5ddb55a78c780c26a00c17f01d1767e4c765d831 /clang
parentfd461fe360c3275effadb0ff5457f5820f07e891 (diff)
downloadbcm5719-llvm-d93779da151a46532353c07b704b8e569ed1c81a.tar.gz
bcm5719-llvm-d93779da151a46532353c07b704b8e569ed1c81a.zip
[Headers] Enable #include_next<float.h> on Darwin
Allows darwin targets to provide additional definitions and implementation specifc values for float.h rdar://problem/21961491 llvm-svn: 289018
Diffstat (limited to 'clang')
-rw-r--r--clang/lib/Headers/float.h7
-rw-r--r--clang/test/Headers/Inputs/usr/include/float.h6
-rw-r--r--clang/test/Headers/float-darwin.c13
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
OpenPOWER on IntegriCloud