summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--clang/lib/Headers/tgmath.h9
-rw-r--r--clang/test/Headers/Inputs/usr/include/tgmath.h4
-rw-r--r--clang/test/Headers/tgmath-darwin.c12
3 files changed, 25 insertions, 0 deletions
diff --git a/clang/lib/Headers/tgmath.h b/clang/lib/Headers/tgmath.h
index 318e1185fee..0b8b5ce277c 100644
--- a/clang/lib/Headers/tgmath.h
+++ b/clang/lib/Headers/tgmath.h
@@ -25,6 +25,14 @@
#ifndef __TGMATH_H
#define __TGMATH_H
+/*
+ * Allow additional definitions and implementation-defined values on Apple
+ * platforms.
+ */
+#if defined(__APPLE__) && __STDC_HOSTED__ && __has_include_next(<tgmath.h>)
+# include_next <tgmath.h>
+#else
+
/* C99 7.22 Type-generic math <tgmath.h>. */
#include <math.h>
@@ -1371,4 +1379,5 @@ static long double
#undef _TG_ATTRS
#endif /* __cplusplus */
+#endif /* __has_include_next */
#endif /* __TGMATH_H */
diff --git a/clang/test/Headers/Inputs/usr/include/tgmath.h b/clang/test/Headers/Inputs/usr/include/tgmath.h
new file mode 100644
index 00000000000..897962d9e16
--- /dev/null
+++ b/clang/test/Headers/Inputs/usr/include/tgmath.h
@@ -0,0 +1,4 @@
+#ifndef SYS_TGMATH_H
+#define SYS_TGMATH_H
+
+#endif /* SYS_TGMATH_H */
diff --git a/clang/test/Headers/tgmath-darwin.c b/clang/test/Headers/tgmath-darwin.c
new file mode 100644
index 00000000000..b24b6c0c720
--- /dev/null
+++ b/clang/test/Headers/tgmath-darwin.c
@@ -0,0 +1,12 @@
+// REQUIRES: system-darwin
+// RUN: %clang -target x86_64-apple-darwin10 -fsyntax-only -std=c11 -isysroot %S/Inputs %s
+#include <tgmath.h>
+
+// Test the #include_next on tgmath.h works on Darwin.
+#ifndef SYS_TGMATH_H
+ #error "SYS_TGMATH_H not defined"
+#endif
+
+#ifndef __TGMATH_H
+ #error "__TGMATH_H not defined"
+#endif
OpenPOWER on IntegriCloud