30#include "llvm/ADT/FoldingSet.h"
31#include "llvm/Support/Compiler.h"
32#include "llvm/Support/ErrorHandling.h"
33#include "llvm/Support/raw_ostream.h"
41 return (A < B ? -1 : (A > B ? 1 : 0));
68 return LHSSelector.getAsIdentifierInfo()->
getName().compare(
69 RHSSelector.getAsIdentifierInfo()->
getName());
72 for (
unsigned I = 0, N = std::min(LN, RN); I != N; ++I) {
108 llvm_unreachable(
"Invalid DeclarationName Kind!");
118 ClassRec->getDecl()->printName(OS, Policy);
123 InjTy->getDecl()->printName(OS, Policy);
127 ClassType.
print(OS, Policy);
135 StringRef Name = II->getName();
138 if (II->isMangledOpenMPVariantName()) {
139 std::pair<StringRef, StringRef> NameContextPair =
141 OS << NameContextPair.first <<
"["
163 OS <<
"<deduction guide for ";
170 assert(OpName &&
"not an overloaded operator");
173 if (OpName[0] >=
'a' && OpName[0] <=
'z')
187 OS << *Rec->getDecl();
193 Type.print(OS, CXXPolicy);
197 OS <<
"<using-directive>";
201 llvm_unreachable(
"Unexpected declaration name kind");
221 if (TD && TD->getDeclContext()->isDependentContext())
229 llvm::raw_string_ostream OS(
Result);
234void *DeclarationName::getFETokenInfoSlow()
const {
237 llvm_unreachable(
"case Identifier already handled by getFETokenInfo!");
241 return castAsCXXSpecialNameExtra()->FETokenInfo;
243 return castAsCXXOperatorIdName()->FETokenInfo;
245 return castAsCXXDeductionGuideNameExtra()->FETokenInfo;
247 return castAsCXXLiteralOperatorIdName()->FETokenInfo;
249 llvm_unreachable(
"DeclarationName has no FETokenInfo!");
253void DeclarationName::setFETokenInfoSlow(
void *
T) {
256 llvm_unreachable(
"case Identifier already handled by setFETokenInfo!");
260 castAsCXXSpecialNameExtra()->FETokenInfo =
T;
263 castAsCXXOperatorIdName()->FETokenInfo =
T;
266 castAsCXXDeductionGuideNameExtra()->FETokenInfo =
T;
269 castAsCXXLiteralOperatorIdName()->FETokenInfo =
T;
272 llvm_unreachable(
"DeclarationName has no FETokenInfo!");
277 llvm::errs() << *
this <<
'\n';
290 llvm::FoldingSetNodeID ID;
291 ID.AddPointer(Template);
293 void *InsertPos =
nullptr;
294 if (
auto *Name = CXXDeductionGuideNames.FindNodeOrInsertPos(ID, InsertPos))
297 auto *Name =
new (Ctx)