OSDN Git Service

Add element-atomic mem intrinsic canary tests for Dataflow Sanitizer.
authorDaniel Neilson <dneilson@azul.com>
Tue, 18 Jul 2017 01:06:52 +0000 (01:06 +0000)
committerDaniel Neilson <dneilson@azul.com>
Tue, 18 Jul 2017 01:06:52 +0000 (01:06 +0000)
commit354fdcfc2a8ffcc3ea3c1129c30115bbe2f5f790
treea9b8ea25f83bcd6cd0f385088065c583191c55ca
parenta0b07014634be1231c20907900020b5ebf877f7c
Add element-atomic mem intrinsic canary tests for Dataflow Sanitizer.

Summary:
Add canary tests to verify that DFSAN currently does nothing with the element atomic memory intrinsics for memcpy, memmove, and memset.

Placeholder tests that will fail once @llvm.mem[cpy|move|set] instrinsics have been added to the MemIntrinsic class hierarchy. These will act as a reminder to verify that DFSAN handles these intrinsics properly once they have been added to that class hierarchy.

Note that there could be some trickiness with these element-atomic intrinsics for the dataflow sanitizer in racy multithreaded programs. The data flow sanitizer inserts additional lib calls to mirror the memory intrinsic's action, so it is possible (very likely, even) that the dfsan buffers will not be in sync with the original buffers. Furthermore, implementation of the dfsan buffer updates for the element atomic intrinsics will have to also use unordered atomic instructions. If we can assume that dfsan is never run on racy multithreaded programs, then the element atomic memory intrinsics can pretty much be treated the same as the regular memory intrinsics.

Reviewers: reames

Reviewed By: reames

Subscribers: llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@308249 91177308-0d34-0410-b5e6-96231b3b80d8
test/Instrumentation/DataFlowSanitizer/unordered_atomic_mem_intrins.ll [new file with mode: 0644]