|
LLVM
8.0.1
|
#include "LLVMContextImpl.h"#include "MetadataImpl.h"#include "SymbolTableListTraitsImpl.h"#include "llvm/ADT/APFloat.h"#include "llvm/ADT/APInt.h"#include "llvm/ADT/ArrayRef.h"#include "llvm/ADT/DenseSet.h"#include "llvm/ADT/None.h"#include "llvm/ADT/STLExtras.h"#include "llvm/ADT/SetVector.h"#include "llvm/ADT/SmallPtrSet.h"#include "llvm/ADT/SmallSet.h"#include "llvm/ADT/SmallVector.h"#include "llvm/ADT/StringMap.h"#include "llvm/ADT/StringRef.h"#include "llvm/ADT/Twine.h"#include "llvm/IR/Argument.h"#include "llvm/IR/BasicBlock.h"#include "llvm/IR/Constant.h"#include "llvm/IR/ConstantRange.h"#include "llvm/IR/Constants.h"#include "llvm/IR/DebugInfoMetadata.h"#include "llvm/IR/DebugLoc.h"#include "llvm/IR/Function.h"#include "llvm/IR/GlobalObject.h"#include "llvm/IR/GlobalVariable.h"#include "llvm/IR/Instruction.h"#include "llvm/IR/LLVMContext.h"#include "llvm/IR/Metadata.h"#include "llvm/IR/Module.h"#include "llvm/IR/TrackingMDRef.h"#include "llvm/IR/Type.h"#include "llvm/IR/Value.h"#include "llvm/IR/ValueHandle.h"#include "llvm/Support/Casting.h"#include "llvm/Support/ErrorHandling.h"#include "llvm/Support/MathExtras.h"#include <algorithm>#include <cassert>#include <cstddef>#include <cstdint>#include <iterator>#include <tuple>#include <type_traits>#include <utility>#include <vector>#include "llvm/IR/Metadata.def"
Go to the source code of this file.
Classes | |
| struct | llvm::MDNode::HasCachedHash< NodeTy > |
| struct | llvm::MDNode::HasCachedHash< NodeTy >::SFINAE< U, Val > |
Macros | |
| #define | HANDLE_METADATA_LEAF(CLASS) |
| #define | HANDLE_MDNODE_LEAF(CLASS) |
| #define | HANDLE_MDNODE_LEAF(CLASS) |
| #define | HANDLE_MDNODE_LEAF_UNIQUABLE(CLASS) |
| #define | HANDLE_MDNODE_LEAF(CLASS) |
| #define | HANDLE_MDNODE_LEAF_UNIQUABLE(CLASS) |
| #define | HANDLE_MDNODE_LEAF_UNIQUABLE(CLASS) |
| #define | HANDLE_MDNODE_LEAF(CLASS) |
Functions | |
| static Metadata * | canonicalizeMetadataForValue (LLVMContext &Context, Metadata *MD) |
| Canonicalize metadata arguments to intrinsics. More... | |
| static DISubprogram * | getLocalFunctionMetadata (Value *V) |
| static bool | isOperandUnresolved (Metadata *Op) |
| static bool | hasSelfReference (MDNode *N) |
| template<class T , class InfoT > | |
| static T * | uniquifyImpl (T *N, DenseSet< T *, InfoT > &Store) |
| static MDNode * | getOrSelfReference (LLVMContext &Context, ArrayRef< Metadata *> Ops) |
| Get a node or a self-reference that looks like it. More... | |
| static bool | isContiguous (const ConstantRange &A, const ConstantRange &B) |
| static bool | canBeMerged (const ConstantRange &A, const ConstantRange &B) |
| static bool | tryMergeRange (SmallVectorImpl< ConstantInt *> &EndPoints, ConstantInt *Low, ConstantInt *High) |
| static void | addRange (SmallVectorImpl< ConstantInt *> &EndPoints, ConstantInt *Low, ConstantInt *High) |
| static SmallVector< TrackingMDRef, 4 > & | getNMDOps (void *Operands) |
| #define HANDLE_MDNODE_LEAF | ( | CLASS | ) |
Definition at line 475 of file Metadata.cpp.
| #define HANDLE_MDNODE_LEAF | ( | CLASS | ) |
Definition at line 475 of file Metadata.cpp.
| #define HANDLE_MDNODE_LEAF | ( | CLASS | ) |
Definition at line 475 of file Metadata.cpp.
| #define HANDLE_MDNODE_LEAF | ( | CLASS | ) |
Definition at line 475 of file Metadata.cpp.
| #define HANDLE_MDNODE_LEAF_UNIQUABLE | ( | CLASS | ) |
| #define HANDLE_MDNODE_LEAF_UNIQUABLE | ( | CLASS | ) |
| #define HANDLE_MDNODE_LEAF_UNIQUABLE | ( | CLASS | ) |
| #define HANDLE_METADATA_LEAF | ( | CLASS | ) |
|
static |
Definition at line 968 of file Metadata.cpp.
References llvm::SmallVectorBase::empty(), llvm::SmallVectorTemplateBase< T >::push_back(), and tryMergeRange().
Referenced by llvm::MDNode::getMostGenericRange(), and llvm::DwarfFile::getUnits().
|
static |
Definition at line 945 of file Metadata.cpp.
References llvm::ConstantRange::intersectWith(), isContiguous(), and llvm::ConstantRange::isEmptySet().
Referenced by tryMergeRange().
|
static |
Canonicalize metadata arguments to intrinsics.
To support bitcode upgrades (and assembly semantic sugar) for MetadataAsValue, we need to canonicalize certain metadata.
This maintains readability of bitcode from when metadata was a type of value, and these bridges were unnecessary.
Definition at line 84 of file Metadata.cpp.
References C, llvm::dyn_cast(), llvm::MDNode::get(), N, and llvm::None.
Referenced by llvm::MetadataAsValue::get(), and llvm::MetadataAsValue::getIfExists().
|
static |
Definition at line 332 of file Metadata.cpp.
References assert(), and getParent().
Referenced by llvm::ValueAsMetadata::handleRAUW().
|
static |
Definition at line 1065 of file Metadata.cpp.
References N, Name, and llvm::Twine::str().
Referenced by llvm::NamedMDNode::addOperand(), llvm::NamedMDNode::clearOperands(), llvm::NamedMDNode::getNumOperands(), llvm::NamedMDNode::getOperand(), llvm::NamedMDNode::setOperand(), and llvm::NamedMDNode::~NamedMDNode().
|
static |
Get a node or a self-reference that looks like it.
Special handling for finding self-references, for use by MDNode::concatenate() and MDNode::intersect() to maintain behaviour from when self-referencing nodes were still uniqued. If the first operand has the same operands as Ops, return the first operand instead.
Definition at line 882 of file Metadata.cpp.
References E, llvm::ArrayRef< T >::empty(), llvm::MDNode::get(), I, N, and llvm::ArrayRef< T >::size().
Referenced by llvm::MDNode::concatenate(), and llvm::MDNode::intersect().
Definition at line 641 of file Metadata.cpp.
References llvm::Metadata::getMetadataID(), llvm::MDNode::operands(), and llvm::MDNode::replaceAllUsesWith().
|
static |
Definition at line 941 of file Metadata.cpp.
References llvm::ConstantRange::getLower(), and llvm::ConstantRange::getUpper().
Referenced by canBeMerged().
Definition at line 533 of file Metadata.cpp.
References assert(), llvm::count_if(), llvm::MDNode::isDistinct(), llvm::MDNode::isResolved(), llvm::MDNode::isTemporary(), llvm::MDNode::isUniqued(), llvm::MDNode::mutable_operands(), N, llvm::MDNode::operands(), llvm::Metadata::Storage, llvm::MDNode::storeDistinctInContext(), and llvm::Metadata::Uniqued.
Referenced by llvm::MDNode::resolve().
|
static |
Definition at line 949 of file Metadata.cpp.
References canBeMerged(), llvm::ConstantInt::get(), llvm::ConstantRange::getLower(), llvm::ConstantInt::getType(), llvm::ConstantRange::getUpper(), llvm::ConstantInt::getValue(), llvm::AArch64CC::LE, Size, llvm::SmallVectorBase::size(), and llvm::ConstantRange::unionWith().
Referenced by addRange(), and llvm::MDNode::getMostGenericRange().
|
static |
Definition at line 762 of file Metadata.cpp.
References llvm::getUniqued(), llvm::detail::DenseSetImpl< ValueT, DenseMap< ValueT, detail::DenseSetEmpty, ValueInfoT, detail::DenseSetPair< ValueT > >, ValueInfoT >::insert(), and N.
1.8.13