Changeset View
Changeset View
Standalone View
Standalone View
llvm/lib/IR/LLVMContextImpl.h
Show First 20 Lines • Show All 662 Lines • ▼ Show 20 Lines | template <> struct MDNodeKeyImpl<DISubroutineType> { | ||||
unsigned getHashValue() const { return hash_combine(Flags, CC, TypeArray); } | unsigned getHashValue() const { return hash_combine(Flags, CC, TypeArray); } | ||||
}; | }; | ||||
template <> struct MDNodeKeyImpl<DIFile> { | template <> struct MDNodeKeyImpl<DIFile> { | ||||
MDString *Filename; | MDString *Filename; | ||||
MDString *Directory; | MDString *Directory; | ||||
std::optional<DIFile::ChecksumInfo<MDString *>> Checksum; | std::optional<DIFile::ChecksumInfo<MDString *>> Checksum; | ||||
std::optional<MDString *> Source; | MDString *Source; | ||||
MDNodeKeyImpl(MDString *Filename, MDString *Directory, | MDNodeKeyImpl(MDString *Filename, MDString *Directory, | ||||
std::optional<DIFile::ChecksumInfo<MDString *>> Checksum, | std::optional<DIFile::ChecksumInfo<MDString *>> Checksum, | ||||
std::optional<MDString *> Source) | MDString *Source) | ||||
: Filename(Filename), Directory(Directory), Checksum(Checksum), | : Filename(Filename), Directory(Directory), Checksum(Checksum), | ||||
Source(Source) {} | Source(Source) {} | ||||
MDNodeKeyImpl(const DIFile *N) | MDNodeKeyImpl(const DIFile *N) | ||||
: Filename(N->getRawFilename()), Directory(N->getRawDirectory()), | : Filename(N->getRawFilename()), Directory(N->getRawDirectory()), | ||||
Checksum(N->getRawChecksum()), Source(N->getRawSource()) {} | Checksum(N->getRawChecksum()), Source(N->getRawSource()) {} | ||||
bool isKeyOf(const DIFile *RHS) const { | bool isKeyOf(const DIFile *RHS) const { | ||||
return Filename == RHS->getRawFilename() && | return Filename == RHS->getRawFilename() && | ||||
Directory == RHS->getRawDirectory() && | Directory == RHS->getRawDirectory() && | ||||
Checksum == RHS->getRawChecksum() && Source == RHS->getRawSource(); | Checksum == RHS->getRawChecksum() && Source == RHS->getRawSource(); | ||||
} | } | ||||
unsigned getHashValue() const { | unsigned getHashValue() const { | ||||
return hash_combine(Filename, Directory, Checksum ? Checksum->Kind : 0, | return hash_combine(Filename, Directory, Checksum ? Checksum->Kind : 0, | ||||
Checksum ? Checksum->Value : nullptr, | Checksum ? Checksum->Value : nullptr, Source); | ||||
Source.value_or(nullptr)); | |||||
} | } | ||||
}; | }; | ||||
template <> struct MDNodeKeyImpl<DISubprogram> { | template <> struct MDNodeKeyImpl<DISubprogram> { | ||||
Metadata *Scope; | Metadata *Scope; | ||||
MDString *Name; | MDString *Name; | ||||
MDString *LinkageName; | MDString *LinkageName; | ||||
Metadata *File; | Metadata *File; | ||||
▲ Show 20 Lines • Show All 888 Lines • Show Last 20 Lines |