summaryrefslogtreecommitdiffstats
path: root/libcxx/fuzzing/fuzzing.cpp
diff options
context:
space:
mode:
authorDaniel Neilson <dneilson@azul.com>2017-10-30 19:51:48 +0000
committerDaniel Neilson <dneilson@azul.com>2017-10-30 19:51:48 +0000
commitf9c7d29c7794d1aa723c708f8ec94f6b01320ed8 (patch)
treed36ecc1a52198e236d266ff758e51f5afa382b10 /libcxx/fuzzing/fuzzing.cpp
parentf83268bd9e2fd087d4396d3b63c87b2bd2641b68 (diff)
downloadbcm5719-llvm-f9c7d29c7794d1aa723c708f8ec94f6b01320ed8.tar.gz
bcm5719-llvm-f9c7d29c7794d1aa723c708f8ec94f6b01320ed8.zip
Create instruction classes for identifying any atomicity of memory intrinsic. (NFC)
Summary: For reference, see: http://lists.llvm.org/pipermail/llvm-dev/2017-August/116589.html This patch fleshes out the instruction class hierarchy with respect to atomic and non-atomic memory intrinsics. With this change, the relevant part of the class hierarchy becomes: IntrinsicInst -> MemIntrinsicBase (methods-only class) -> MemIntrinsic (non-atomic intrinsics) -> MemSetInst -> MemTransferInst -> MemCpyInst -> MemMoveInst -> AtomicMemIntrinsic (atomic intrinsics) -> AtomicMemSetInst -> AtomicMemTransferInst -> AtomicMemCpyInst -> AtomicMemMoveInst -> AnyMemIntrinsic (both atomicities) -> AnyMemSetInst -> AnyMemTransferInst -> AnyMemCpyInst -> AnyMemMoveInst This involves some class renaming: ElementUnorderedAtomicMemCpyInst -> AtomicMemCpyInst ElementUnorderedAtomicMemMoveInst -> AtomicMemMoveInst ElementUnorderedAtomicMemSetInst -> AtomicMemSetInst A script for doing this renaming in downstream trees is included below. An example of where the Any* classes should be used in LLVM is when reasoning about the effects of an instruction (ex: aliasing). --- Script for renaming AtomicMem* classes: PREFIXES="[<,([:space:]]" CLASSES="MemIntrinsic|MemTransferInst|MemSetInst|MemMoveInst|MemCpyInst" SUFFIXES="[;)>,[:space:]]" REGEX="(${PREFIXES})ElementUnorderedAtomic(${CLASSES})(${SUFFIXES})" REGEX2="visitElementUnorderedAtomic(${CLASSES})" FILES=$( grep -E "(${REGEX}|${REGEX2})" -r . | tr ':' ' ' | awk '{print $1}' | sort | uniq ) SED_SCRIPT="s~${REGEX}~\1Atomic\2\3~g" SED_SCRIPT2="s~${REGEX2}~visitAtomic\1~g" for f in $FILES; do echo "Processing: $f" sed -i ".bak" -E "${SED_SCRIPT};${SED_SCRIPT2};${EA_SED_SCRIPT};${EA_SED_SCRIPT2}" $f done Reviewers: sanjoy, deadalnix, apilipenko, anna, skatkov, mkazantsev Reviewed By: sanjoy Subscribers: hfinkel, jholewinski, arsenm, sdardis, nhaehnle, JDevlieghere, javed.absar, llvm-commits Differential Revision: https://reviews.llvm.org/D38419 llvm-svn: 316950
Diffstat (limited to 'libcxx/fuzzing/fuzzing.cpp')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud