diff options
| author | Reid Kleckner <reid@kleckner.net> | 2013-10-17 01:29:48 +0000 |
|---|---|---|
| committer | Reid Kleckner <reid@kleckner.net> | 2013-10-17 01:29:48 +0000 |
| commit | 00d33a5cb115b82c19ed4cfb2e4bc94a10bfd752 (patch) | |
| tree | c2bd543702565b724f0845ed2b0b02cf16ed7166 /clang/test/Headers/ms-intrin.cpp | |
| parent | 69918bccab95155bfa9c525d11dbdf016bc61e47 (diff) | |
| download | bcm5719-llvm-00d33a5cb115b82c19ed4cfb2e4bc94a10bfd752.tar.gz bcm5719-llvm-00d33a5cb115b82c19ed4cfb2e4bc94a10bfd752.zip | |
Add implementations of the MSVC barrier intrinsics
Summary:
These are deprecated in VS 2012 according to MSDN. They don't actually
compile down to any code. They prevent the compiler from reordering
memory accesses across the barrier, which is what a memory-clobbering
volatile asm does.
Reviewers: echristo
CC: cfe-commits
Differential Revision: http://llvm-reviews.chandlerc.com/D1954
llvm-svn: 192860
Diffstat (limited to 'clang/test/Headers/ms-intrin.cpp')
| -rw-r--r-- | clang/test/Headers/ms-intrin.cpp | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/clang/test/Headers/ms-intrin.cpp b/clang/test/Headers/ms-intrin.cpp index 58ad5a2449c..1bf134e7eac 100644 --- a/clang/test/Headers/ms-intrin.cpp +++ b/clang/test/Headers/ms-intrin.cpp @@ -1,6 +1,6 @@ // RUN: %clang_cc1 -triple i386-pc-win32 -target-cpu pentium4 \ // RUN: -fms-extensions -fms-compatibility -fmsc-version=1700 \ -// RUN: -ffreestanding -fsyntax-only %s +// RUN: -ffreestanding -verify %s // Intrin.h needs size_t, but -ffreestanding prevents us from getting it from // stddef.h. Work around it with this typedef. @@ -11,3 +11,14 @@ typedef __SIZE_TYPE__ size_t; // Use some C++ to make sure we closed the extern "C" brackets. template <typename T> void foo(T V) {} + +void bar() { + _ReadWriteBarrier(); // expected-warning {{is deprecated: use other intrinsics or C++11 atomics instead}} + _ReadBarrier(); // expected-warning {{is deprecated: use other intrinsics or C++11 atomics instead}} + _WriteBarrier(); // expected-warning {{is deprecated: use other intrinsics or C++11 atomics instead}} + // FIXME: It'd be handy if we didn't have to hardcode the line number in + // intrin.h. + // expected-note@Intrin.h:754 {{declared here}} + // expected-note@Intrin.h:759 {{declared here}} + // expected-note@Intrin.h:764 {{declared here}} +} |

