]> granicus.if.org Git - clang/commitdiff
Intrin.h: include setjmp.h to get a jmp_buf definition
authorHans Wennborg <hans@hanshq.net>
Tue, 28 Jan 2014 23:01:59 +0000 (23:01 +0000)
committerHans Wennborg <hans@hanshq.net>
Tue, 28 Jan 2014 23:01:59 +0000 (23:01 +0000)
This makes sure that the ms-intrin.cpp test passes by providing
a mock setjmp.h as a test input.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@200344 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Headers/Intrin.h
test/Headers/Inputs/include/setjmp.h [new file with mode: 0644]
test/Headers/ms-intrin.cpp

index 992fabf7aace263229136b64727be910f7ba49c6..6fd1eeb37398a2f0af28ce7546d5590e38459176 100644 (file)
@@ -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 @@ unsigned __int64 __cdecl _rotr64(unsigned __int64 _Value, int _Shift);
 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/test/Headers/Inputs/include/setjmp.h b/test/Headers/Inputs/include/setjmp.h
new file mode 100644 (file)
index 0000000..3d5e903
--- /dev/null
@@ -0,0 +1,8 @@
+#ifndef SETJMP_H
+#define SETJMP_H
+
+typedef struct {
+  int x[42];
+} jmp_buf;
+
+#endif
index 0a2c9201a4c6f2947ba49b3b1a6c23e8b9336b0c..4583915f4438f0510f0a2d12c21f805067ab9bdc 100644 (file)
@@ -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.