Helper class to manipulate !mmra metadata nodes.
Declared in <llvm/IR/MemoryModelRelaxationAnnotations.h>
class MMRAMetadata;
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.
| Name | Description |
|---|---|
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. |
| Name | Description |
|---|---|
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. |
| Name | Description |
|---|---|
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. |