|
LLVM
4.0.0
|
Debug location. More...
#include <DebugInfoMetadata.h>
Static Public Member Functions | |
| static const DILocation * | getMergedLocation (const DILocation *LocA, const DILocation *LocB) |
| When two instructions are combined into a single instruction we also need to combine the original locations into a single location. More... | |
| static bool | classof (const Metadata *MD) |
Static Public Member Functions inherited from llvm::MDNode | |
| static MDTuple * | get (LLVMContext &Context, ArrayRef< Metadata * > MDs) |
| static MDTuple * | getIfExists (LLVMContext &Context, ArrayRef< Metadata * > MDs) |
| static MDTuple * | getDistinct (LLVMContext &Context, ArrayRef< Metadata * > MDs) |
| static TempMDTuple | getTemporary (LLVMContext &Context, ArrayRef< Metadata * > MDs) |
| static void | deleteTemporary (MDNode *N) |
| Deallocate a node created by getTemporary. More... | |
| template<class T > | |
| static std::enable_if < std::is_base_of< MDNode, T > ::value, T * >::type | replaceWithPermanent (std::unique_ptr< T, TempMDNodeDeleter > N) |
| Replace a temporary node with a permanent one. More... | |
| template<class T > | |
| static std::enable_if < std::is_base_of< MDNode, T > ::value, T * >::type | replaceWithUniqued (std::unique_ptr< T, TempMDNodeDeleter > N) |
| Replace a temporary node with a uniqued one. More... | |
| template<class T > | |
| static std::enable_if < std::is_base_of< MDNode, T > ::value, T * >::type | replaceWithDistinct (std::unique_ptr< T, TempMDNodeDeleter > N) |
| Replace a temporary node with a distinct one. More... | |
| static bool | classof (const Metadata *MD) |
| Methods for support type inquiry through isa, cast, and dyn_cast: More... | |
| static MDNode * | concatenate (MDNode *A, MDNode *B) |
| Methods for metadata merging. More... | |
| static MDNode * | intersect (MDNode *A, MDNode *B) |
| static MDNode * | getMostGenericTBAA (MDNode *A, MDNode *B) |
| static MDNode * | getMostGenericFPMath (MDNode *A, MDNode *B) |
| static MDNode * | getMostGenericRange (MDNode *A, MDNode *B) |
| static MDNode * | getMostGenericAliasScope (MDNode *A, MDNode *B) |
| static MDNode * | getMostGenericAlignmentOrDereferenceable (MDNode *A, MDNode *B) |
Public Attributes | |
| unsigned | Line |
| unsigned unsigned | Column |
| unsigned unsigned DILocalScope * | Scope |
| unsigned unsigned DILocalScope DILocation * | InlinedAt |
Friends | |
| class | LLVMContextImpl |
| class | MDNode |
Additional Inherited Members | |
Public Types inherited from llvm::MDNode | |
| typedef const MDOperand * | op_iterator |
| typedef iterator_range < op_iterator > | op_range |
Public Types inherited from llvm::Metadata | |
| enum | MetadataKind |
Protected Types inherited from llvm::MDNode | |
| typedef iterator_range < MDOperand * > | mutable_op_range |
Protected Types inherited from llvm::Metadata | |
| enum | StorageType { Uniqued, Distinct, Temporary } |
| Active type of storage. More... | |
Protected Member Functions inherited from llvm::MDNode | |
| void * | operator new (size_t Size, unsigned NumOps) |
| void | operator delete (void *Mem) |
| void | operator delete (void *, unsigned) |
| Required by std, but never called. More... | |
| void | operator delete (void *, unsigned, bool) |
| Required by std, but never called. More... | |
| MDNode (LLVMContext &Context, unsigned ID, StorageType Storage, ArrayRef< Metadata * > Ops1, ArrayRef< Metadata * > Ops2=None) | |
| ~MDNode ()=default | |
| void | dropAllReferences () |
| MDOperand * | mutable_begin () |
| MDOperand * | mutable_end () |
| mutable_op_range | mutable_operands () |
| void | setOperand (unsigned I, Metadata *New) |
| Set an operand. More... | |
| void | storeDistinctInContext () |
Protected Member Functions inherited from llvm::Metadata | |
| Metadata (unsigned ID, StorageType Storage) | |
| ~Metadata ()=default | |
| void | handleChangedOperand (void *, Metadata *) |
| Default handling of a changed operand, which asserts. More... | |
Static Protected Member Functions inherited from llvm::MDNode | |
| template<class T , class StoreT > | |
| static T * | storeImpl (T *N, StorageType Storage, StoreT &Store) |
| template<class T > | |
| static T * | storeImpl (T *N, StorageType Storage) |
Protected Attributes inherited from llvm::Metadata | |
| unsigned char | Storage |
| Storage flag for non-uniqued, otherwise unowned, metadata. More... | |
| unsigned short | SubclassData16 |
| unsigned | SubclassData32 |
Debug location.
A debug location in source code, used for debug info and otherwise.
Definition at line 1229 of file DebugInfoMetadata.h.
Definition at line 1343 of file DebugInfoMetadata.h.
References llvm::Metadata::getMetadataID().
|
inline |
Returns a new DILocation with updated Discriminator.
Definition at line 1679 of file DebugInfoMetadata.h.
References llvm::dyn_cast(), llvm::MDNode::get(), llvm::MDNode::getContext(), llvm::DIScope::getScope(), and Scope.
Referenced by addDiscriminators().
| llvm::DILocation::DEFINE_MDNODE_GET | ( | DILocation | , |
| (unsigned Line, unsigned Column, Metadata *Scope,Metadata *InlinedAt=nullptr) | , | ||
| (Line, Column, Scope, InlinedAt) | |||
| ) |
|
inlinestatic |
When two instructions are combined into a single instruction we also need to combine the original locations into a single location.
When the locations are the same we can use either location. When they differ, we need a third location which is distinct from either. If they have the same file/line but have a different discriminator we could create a location with a new discriminator. If they are from different files/lines the location is ambiguous and can't be represented in a single line entry. In this case, no location should be set.
Currently the function does not create a new location. If the locations are the same, or cannot be discriminated, the first location is returned. Otherwise an empty location will be used.
Definition at line 1329 of file DebugInfoMetadata.h.
Referenced by HoistThenElseCodeToIf(), and sinkLastInstruction().
|
inline |
Definition at line 1337 of file DebugInfoMetadata.h.
References llvm::MDNode::getNumOperands(), and llvm::MDNode::getOperand().
Referenced by llvm::MDNodeKeyImpl< DILocation >::isKeyOf().
|
inline |
Definition at line 1336 of file DebugInfoMetadata.h.
References llvm::MDNode::getOperand().
Referenced by llvm::MDNodeKeyImpl< DILocation >::isKeyOf().
|
friend |
Definition at line 1230 of file DebugInfoMetadata.h.
|
friend |
Definition at line 1231 of file DebugInfoMetadata.h.
Definition at line 1265 of file DebugInfoMetadata.h.
| unsigned unsigned DILocalScope DILocation* llvm::DILocation::InlinedAt |
Definition at line 1266 of file DebugInfoMetadata.h.
| unsigned llvm::DILocation::Line |
Definition at line 1265 of file DebugInfoMetadata.h.
| unsigned unsigned DILocalScope* llvm::DILocation::Scope |
Definition at line 1265 of file DebugInfoMetadata.h.
Referenced by cloneWithDiscriminator().
1.8.6