[clang] e5438f3 - clang/win: Add __readfsdword to intrin.h
Nico Weber via cfe-commits
cfe-commits at lists.llvm.org
Thu Sep 2 09:22:16 PDT 2021
Author: Nico Weber
Date: 2021-09-02T12:22:07-04:00
New Revision: e5438f386854136d848989315f53788808afa37a
URL: https://github.com/llvm/llvm-project/commit/e5438f386854136d848989315f53788808afa37a
DIFF: https://github.com/llvm/llvm-project/commit/e5438f386854136d848989315f53788808afa37a.diff
LOG: clang/win: Add __readfsdword to intrin.h
When using __readfsdword(), clang used to warn that one has
to include <intrin.h> -- no matter if that was already included
or not.
Now it only warns if it's not yet included.
To verify that this was the only intrin with this problem, I ran:
$ for f in $(grep intrin.h clang/include/clang/Basic/BuiltinsX86* |
egrep -o '\([^,]+,' | egrep -o '[^(,]*'); do
if ! grep -q $f clang/lib/Headers/intrin.h; then echo $f; fi;
done
This printed 9 more functions, but those are all in emmintrin.h,
xsaveintrin.h (which are included by intrin.h based on /arch: flags).
So this is indeed the only built-in that was missing in intrin.h.
Fixes PR51188.
Differential Revision: https://reviews.llvm.org/D109085
Added:
Modified:
clang/lib/Headers/intrin.h
clang/test/CodeGen/X86/ms-x86-intrinsics.c
Removed:
################################################################################
diff --git a/clang/lib/Headers/intrin.h b/clang/lib/Headers/intrin.h
index 34ec79d6acbc6..4803277472ee8 100644
--- a/clang/lib/Headers/intrin.h
+++ b/clang/lib/Headers/intrin.h
@@ -97,8 +97,9 @@ unsigned long __readcr8(void);
unsigned int __readdr(unsigned int);
#ifdef __i386__
unsigned char __readfsbyte(unsigned long);
-unsigned __int64 __readfsqword(unsigned long);
unsigned short __readfsword(unsigned long);
+unsigned long __readfsdword(unsigned long);
+unsigned __int64 __readfsqword(unsigned long);
#endif
unsigned __int64 __readmsr(unsigned long);
unsigned __int64 __readpmc(unsigned long);
diff --git a/clang/test/CodeGen/X86/ms-x86-intrinsics.c b/clang/test/CodeGen/X86/ms-x86-intrinsics.c
index 6f745ff00f54e..0eca455bb5c32 100644
--- a/clang/test/CodeGen/X86/ms-x86-intrinsics.c
+++ b/clang/test/CodeGen/X86/ms-x86-intrinsics.c
@@ -1,10 +1,12 @@
-// RUN: %clang_cc1 -ffreestanding -fms-extensions -fms-compatibility -fms-compatibility-version=17.00 \
+// RUN: %clang_cc1 -Werror -ffreestanding -fms-extensions -fms-compatibility -fms-compatibility-version=17.00 \
// RUN: -triple i686--windows -Oz -emit-llvm %s -o - \
// RUN: | FileCheck %s -check-prefix=CHECK -check-prefix=CHECK-I386
-// RUN: %clang_cc1 -ffreestanding -fms-extensions -fms-compatibility -fms-compatibility-version=17.00 \
+// RUN: %clang_cc1 -Werror -ffreestanding -fms-extensions -fms-compatibility -fms-compatibility-version=17.00 \
// RUN: -triple x86_64--windows -Oz -emit-llvm %s -o - \
// RUN: | FileCheck %s --check-prefix=CHECK --check-prefix=CHECK-X64
+#include <intrin.h>
+
#if defined(__i386__)
char test__readfsbyte(unsigned long Offset) {
return __readfsbyte(++Offset);
More information about the cfe-commits
mailing list