r203714 - MS intrinsics: don't declare __readeflags and __writeeflags in Intrin.h

Hans Wennborg hans at hanshq.net
Wed Mar 12 14:09:03 PDT 2014


Author: hans
Date: Wed Mar 12 16:09:03 2014
New Revision: 203714

URL: http://llvm.org/viewvc/llvm-project?rev=203714&view=rev
Log:
MS intrinsics: don't declare __readeflags and __writeeflags in Intrin.h

They're already defined in ia32intrin.h, and this would cause including Intrin.h
in 64-bit mode to fail because of conflicting types. Update ms-intrin.cpp to
also run in 64-bit mode to catch things like this.

Modified:
    cfe/trunk/lib/Headers/Intrin.h
    cfe/trunk/test/Headers/ms-intrin.cpp

Modified: cfe/trunk/lib/Headers/Intrin.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Headers/Intrin.h?rev=203714&r1=203713&r2=203714&view=diff
==============================================================================
--- cfe/trunk/lib/Headers/Intrin.h (original)
+++ cfe/trunk/lib/Headers/Intrin.h Wed Mar 12 16:09:03 2014
@@ -106,7 +106,6 @@ unsigned long __readcr3(void);
 unsigned long __readcr4(void);
 unsigned long __readcr8(void);
 unsigned int __readdr(unsigned int);
-unsigned int __readeflags(void);
 #ifdef __i386__
 static __inline__
 unsigned char __readfsbyte(unsigned long);
@@ -142,7 +141,6 @@ void __writecr3(unsigned int);
 void __writecr4(unsigned int);
 void __writecr8(unsigned int);
 void __writedr(unsigned int, unsigned int);
-void __writeeflags(unsigned int);
 void __writefsbyte(unsigned long, unsigned char);
 void __writefsdword(unsigned long, unsigned long);
 void __writefsqword(unsigned long, unsigned __int64);

Modified: cfe/trunk/test/Headers/ms-intrin.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Headers/ms-intrin.cpp?rev=203714&r1=203713&r2=203714&view=diff
==============================================================================
--- cfe/trunk/test/Headers/ms-intrin.cpp (original)
+++ cfe/trunk/test/Headers/ms-intrin.cpp Wed Mar 12 16:09:03 2014
@@ -3,6 +3,11 @@
 // RUN:     -ffreestanding -fsyntax-only -Werror \
 // RUN:     -isystem %S/Inputs/include %s
 
+// RUN: %clang_cc1 -triple x86_64-pc-win32  \
+// RUN:     -fms-extensions -fms-compatibility -fmsc-version=1700 \
+// 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.
 typedef __SIZE_TYPE__ size_t;





More information about the cfe-commits mailing list