llvm::MMRAMetadata

Helper class to manipulate !mmra metadata nodes.

Synopsis

Declared in <llvm/IR/MemoryModelRelaxationAnnotations.h>

class MMRAMetadata;

Description

This can be visualized as a set of "tags", with each tag representing a particular property of an instruction, as explained in the MemoryModelRelaxationAnnotations docs.

This class (and the optimizer in general) does not reason about the exact nature of the tags and the properties they imply. It just sees the metadata as a collection of tags, which are a prefix/suffix pair of strings.

Type Aliases

NameDescription
SetT Dense set of MMRA tags.
TagT Prefix/suffix pair that identifies a single MMRA tag.
const_iterator Const iterator over the tags in this set.

Member Functions

NameDescription
MMRAMetadata [constructor]Constructors
begin Return an iterator to the first tag.
dump Dump this set of tags to stderr for debugging.
empty Return true if this set contains no tags.
end Return an iterator past the last tag.
hasTag Return true if this set contains the tag (Prefix, Suffix).
hasTagWithPrefix Return true if this set contains any tag with prefix Prefix.
isCompatibleWith Return whether this set of tags is compatible with Other.
print Print this set of tags to OS.
size Return the number of tags in this set.
operator bool Return true if this set of tags is non-empty.
operator== Return true if this set of tags equals Other.
operator!= Return true if this set of tags differs from Other.

Static Member Functions

NameDescription
appendTags Appends Tags to the !mmra metadata on I, merging with any existing MMRA metadata.
checkCompatibility Return whether the MMRAs on A and B are compatible.
combine Combines A and B according to MMRA semantics.
getMD Creates !mmra metadata from Tags.
getTagMD getTagMD overloads
isTagMD Return true if MD is a well-formed MMRA tag.