Implement __stosb intrinsic as a volatile memset
authorAlbert Gutowski <agutowski@google.com>
Fri, 14 Oct 2016 17:33:05 +0000 (17:33 +0000)
committerAlbert Gutowski <agutowski@google.com>
Fri, 14 Oct 2016 17:33:05 +0000 (17:33 +0000)
commit1deab387170a0877485e9aca7461acac79b33be3
treefd89d89caffae48b6add6cfd403cc7ea4b4dfb42
parentc39f8b0a3a1dd8bab1ddcfd865eaf092b2a8507f
Implement __stosb intrinsic as a volatile memset

Summary: We need `__stosb` to be an intrinsic, because SecureZeroMemory function uses it without including intrin.h. Implementing it as a volatile memset is not consistent with MSDN specification, but it gives us target-independent IR while keeping the most important properties of `__stosb`.

Reviewers: rnk, hans, thakis, majnemer

Subscribers: cfe-commits

Differential Revision: https://reviews.llvm.org/D25334

llvm-svn: 284253
clang/include/clang/Basic/BuiltinsX86.def
clang/lib/CodeGen/CGBuiltin.cpp
clang/lib/Headers/intrin.h
clang/test/CodeGen/ms-intrinsics.c
clang/test/Headers/ms-intrin.cpp