Intrin.h: include setjmp.h to get a jmp_buf definition
This makes sure that the ms-intrin.cpp test passes by providing
a mock setjmp.h as a test input.
llvm-svn: 200344
diff --git a/clang/lib/Headers/Intrin.h b/clang/lib/Headers/Intrin.h
index 992fabf..6fd1eeb 100644
--- a/clang/lib/Headers/Intrin.h
+++ b/clang/lib/Headers/Intrin.h
@@ -32,6 +32,9 @@
/* First include the standard intrinsics. */
#include <x86intrin.h>
+/* For the definition of jmp_buf. */
+#include <setjmp.h>
+
#ifdef __cplusplus
extern "C" {
#endif
@@ -279,10 +282,7 @@
static __inline__
unsigned char _rotr8(unsigned char _Value, unsigned char _Shift);
int _sarx_i32(int, unsigned int);
-
-/* FIXME: Need definition for jmp_buf.
- int __cdecl _setjmp(jmp_buf); */
-
+int __cdecl _setjmp(jmp_buf);
unsigned int _shlx_u32(unsigned int, unsigned int);
unsigned int _shrx_u32(unsigned int, unsigned int);
void _Store_HLERelease(long volatile *, long);
diff --git a/clang/test/Headers/Inputs/include/setjmp.h b/clang/test/Headers/Inputs/include/setjmp.h
new file mode 100644
index 0000000..3d5e903
--- /dev/null
+++ b/clang/test/Headers/Inputs/include/setjmp.h
@@ -0,0 +1,8 @@
+#ifndef SETJMP_H
+#define SETJMP_H
+
+typedef struct {
+ int x[42];
+} jmp_buf;
+
+#endif
diff --git a/clang/test/Headers/ms-intrin.cpp b/clang/test/Headers/ms-intrin.cpp
index 0a2c920..4583915 100644
--- a/clang/test/Headers/ms-intrin.cpp
+++ b/clang/test/Headers/ms-intrin.cpp
@@ -1,6 +1,7 @@
// RUN: %clang_cc1 -triple i386-pc-win32 -target-cpu pentium4 \
// RUN: -fms-extensions -fms-compatibility -fmsc-version=1700 \
-// RUN: -ffreestanding -fsyntax-only -Werror %s
+// RUN: -ffreestanding -fsyntax-only -Werror \
+// RUN: -isystem %S/Inputs/include %s
// Intrin.h needs size_t, but -ffreestanding prevents us from getting it from
// stddef.h. Work around it with this typedef.