LLVM  8.0.0svn
Classes | Public Types | Public Member Functions | Static Public Member Functions | Public Attributes | Friends | List of all members
llvm::DIFile Class Reference

File. More...

#include "llvm/IR/DebugInfoMetadata.h"

Inheritance diagram for llvm::DIFile:
Inheritance graph
[legend]
Collaboration diagram for llvm::DIFile:
Collaboration graph
[legend]

Classes

struct  ChecksumInfo
 A single checksum, represented by a Kind and a Value (a string). More...
 

Public Types

enum  ChecksumKind { CSK_MD5 = 1, CSK_SHA1 = 2, CSK_Last = CSK_SHA1 }
 Which algorithm (e.g. More...
 
- Public Types inherited from llvm::DINode
enum  DIFlags : uint32_t { FlagAccessibility = FlagPrivate | FlagProtected | FlagPublic, FlagPtrToMemberRep }
 Debug info flags. More...
 
- Public Types inherited from llvm::MDNode
using op_iterator = const MDOperand *
 
using op_range = iterator_range< op_iterator >
 

Public Member Functions

 DEFINE_MDNODE_GET (DIFile,(StringRef Filename, StringRef Directory, Optional< ChecksumInfo< StringRef >> CS=None, Optional< StringRef > Source=None),(Filename, Directory, CS, Source)) DEFINE_MDNODE_GET(DIFile
 
- Public Member Functions inherited from llvm::DIScope
DIFilegetFile () const
 
StringRef getFilename () const
 
StringRef getDirectory () const
 
Optional< StringRefgetSource () const
 
StringRef getName () const
 
DIScopeRef getScope () const
 
MetadatagetRawFile () const
 Return the raw underlying file. More...
 
- Public Member Functions inherited from llvm::DINode
unsigned getTag () const
 
- Public Member Functions inherited from llvm::MDNode
 MDNode (const MDNode &)=delete
 
void operator= (const MDNode &)=delete
 
void * operator new (size_t)=delete
 
TempMDNode clone () const
 Create a (temporary) clone of this. More...
 
LLVMContextgetContext () const
 
void replaceOperandWith (unsigned I, Metadata *New)
 Replace a specific operand. More...
 
bool isResolved () const
 Check if node is fully resolved. More...
 
bool isUniqued () const
 
bool isDistinct () const
 
bool isTemporary () const
 
void replaceAllUsesWith (Metadata *MD)
 RAUW a temporary. More...
 
void resolveCycles ()
 Resolve cycles. More...
 
void resolve ()
 Resolve a unique, unresolved node. More...
 
op_iterator op_begin () const
 
op_iterator op_end () const
 
op_range operands () const
 
const MDOperandgetOperand (unsigned I) const
 
unsigned getNumOperands () const
 Return number of MDNode operands. More...
 
bool isTBAAVtableAccess () const
 Check whether MDNode is a vtable access. More...
 

Static Public Member Functions

static Optional< ChecksumKindgetChecksumKind (StringRef CSKindStr)
 
static bool classof (const Metadata *MD)
 
- Static Public Member Functions inherited from llvm::DIScope
static bool classof (const Metadata *MD)
 
- Static Public Member Functions inherited from llvm::DINode
static DIFlags getFlag (StringRef Flag)
 
static StringRef getFlagString (DIFlags Flag)
 
static DIFlags splitFlags (DIFlags Flags, SmallVectorImpl< DIFlags > &SplitFlags)
 Split up a flags bitfield. More...
 
static bool classof (const Metadata *MD)
 
- Static Public Member Functions inherited from llvm::MDNode
static MDTupleget (LLVMContext &Context, ArrayRef< Metadata *> MDs)
 
static MDTuplegetIfExists (LLVMContext &Context, ArrayRef< Metadata *> MDs)
 
static MDTuplegetDistinct (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 MDNodeconcatenate (MDNode *A, MDNode *B)
 Methods for metadata merging. More...
 
static MDNodeintersect (MDNode *A, MDNode *B)
 
static MDNodegetMostGenericTBAA (MDNode *A, MDNode *B)
 
static MDNodegetMostGenericFPMath (MDNode *A, MDNode *B)
 
static MDNodegetMostGenericRange (MDNode *A, MDNode *B)
 
static MDNodegetMostGenericAliasScope (MDNode *A, MDNode *B)
 
static MDNodegetMostGenericAlignmentOrDereferenceable (MDNode *A, MDNode *B)
 

Public Attributes

MDStringFilename
 
MDString MDStringDirectory
 
MDString MDString Optional< ChecksumInfo< MDString * > > CS = None
 
MDString MDString Optional< ChecksumInfo< MDString * > > Optional< MDString * > Source
 

Friends

class LLVMContextImpl
 
class MDNode
 

Additional Inherited Members

- Protected Types inherited from llvm::MDNode
using mutable_op_range = iterator_range< MDOperand * >
 
 Active type of storage. More...
- Protected Member Functions inherited from llvm::DIScope
 DIScope (LLVMContext &C, unsigned ID, StorageType Storage, unsigned Tag, ArrayRef< Metadata *> Ops)
 
 ~DIScope ()=default
 
- Protected Member Functions inherited from llvm::DINode
 DINode (LLVMContext &C, unsigned ID, StorageType Storage, unsigned Tag, ArrayRef< Metadata *> Ops1, ArrayRef< Metadata *> Ops2=None)
 
 ~DINode ()=default
 
template<class Ty >
Ty * getOperandAs (unsigned I) const
 
StringRef getStringOperand (unsigned I) const
 
void setTag (unsigned Tag)
 Allow subclasses to mutate the tag. More...
 
- Protected Member Functions inherited from llvm::MDNode
 MDNode (LLVMContext &Context, unsigned ID, StorageType Storage, ArrayRef< Metadata *> Ops1, ArrayRef< Metadata *> Ops2=None)
 
 ~MDNode ()=default
 
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...
 
void dropAllReferences ()
 
MDOperandmutable_begin ()
 
MDOperandmutable_end ()
 
mutable_op_range mutable_operands ()
 
void setOperand (unsigned I, Metadata *New)
 Set an operand. More...
 
void storeDistinctInContext ()
 
- Static Protected Member Functions inherited from llvm::DINode
static MDStringgetCanonicalMDString (LLVMContext &Context, StringRef S)
 
- Static Protected Member Functions inherited from llvm::MDNode
template<class T , class StoreT >
static TstoreImpl (T *N, StorageType Storage, StoreT &Store)
 
template<class T >
static TstoreImpl (T *N, StorageType Storage)
 

Detailed Description

File.

TODO: Merge with directory/file node (including users). TODO: Canonicalize paths on creation.

Definition at line 499 of file DebugInfoMetadata.h.

Member Enumeration Documentation

◆ ChecksumKind

Which algorithm (e.g.

MD5) a checksum was generated with.

The encoding is explicit because it is used directly in Bitcode. The value 0 is reserved to indicate the absence of a checksum in Bitcode.

Enumerator
CSK_MD5 
CSK_SHA1 
CSK_Last 

Definition at line 508 of file DebugInfoMetadata.h.

Member Function Documentation

◆ classof()

static bool llvm::DIFile::classof ( const Metadata MD)
inlinestatic

Definition at line 602 of file DebugInfoMetadata.h.

References llvm::Metadata::getMetadataID().

◆ DEFINE_MDNODE_GET()

llvm::DIFile::DEFINE_MDNODE_GET ( DIFile  ,
(StringRef Filename, StringRef Directory, Optional< ChecksumInfo< StringRef >> CS=None, Optional< StringRef > Source=None ,
(Filename, Directory, CS, Source)   
)

◆ getChecksumKind()

Optional< DIFile::ChecksumKind > DIFile::getChecksumKind ( StringRef  CSKindStr)
static

Friends And Related Function Documentation

◆ LLVMContextImpl

friend class LLVMContextImpl
friend

Definition at line 500 of file DebugInfoMetadata.h.

◆ MDNode

friend class MDNode
friend

Definition at line 501 of file DebugInfoMetadata.h.

Member Data Documentation

◆ CS

Definition at line 576 of file DebugInfoMetadata.h.

◆ Directory

MDString MDString* llvm::DIFile::Directory

Definition at line 575 of file DebugInfoMetadata.h.

◆ Filename

MDString* llvm::DIFile::Filename

Definition at line 575 of file DebugInfoMetadata.h.

◆ Source

Initial value:
= None),
(Filename, Directory, CS, Source))
TempDIFile clone() const { return cloneImpl(); }
StringRef getFilename() const { return getStringOperand(0); }
StringRef getDirectory() const { return getStringOperand(1); }
Optional<ChecksumInfo<StringRef>> getChecksum() const {
Optional<ChecksumInfo<StringRef>> StringRefChecksum;
if (Checksum)
StringRefChecksum.emplace(Checksum->Kind, Checksum->Value->getString());
return StringRefChecksum;
}
Optional<StringRef> getSource() const {
return Source ? Optional<StringRef>((*Source)->getString()) : None;
}
MDString *getRawFilename() const { return getOperandAs<MDString>(0); }
MDString *getRawDirectory() const { return getOperandAs<MDString>(1); }
Optional<ChecksumInfo<MDString *>> getRawChecksum() const { return Checksum; }
Optional<MDString *> getRawSource() const { return Source; }
static StringRef getChecksumKindAsString(ChecksumKind CSKind)

Definition at line 577 of file DebugInfoMetadata.h.


The documentation for this class was generated from the following files: