15 OS << VD->getNameAsString();
18 OS <<
"MaterializeTemporaryExpr at " << MTE;
20 if (
const auto *PVD = PB->getParmVarDecl())
21 OS <<
"$" << PVD->getNameAsString();
22 else if (PB->getImplicitThisParent())
25 OS <<
"NewAllocation at " << E;
27 llvm_unreachable(
"access path base invalid");
28 for (
const auto &E : Elements)
33 OS <<
getID() <<
" (Path: ";
39LoanManager::getOrCreatePlaceholderBase(
const ParmVarDecl *PVD) {
40 llvm::FoldingSetNodeID ID;
42 llvm::FoldingSetInsertToken InsertToken;
43 if (
PlaceholderBase *Existing = PlaceholderBases.lookup(ID, InsertToken))
48 PlaceholderBases.insert(NewPB, InsertToken);
52const PlaceholderBase *
53LoanManager::getOrCreatePlaceholderBase(
const CXXMethodDecl *MD) {
54 llvm::FoldingSetNodeID ID;
56 llvm::FoldingSetInsertToken InsertToken;
57 if (PlaceholderBase *Existing = PlaceholderBases.lookup(ID, InsertToken))
60 void *Mem = LoanAllocator.Allocate<PlaceholderBase>();
61 PlaceholderBase *NewPB =
new (Mem) PlaceholderBase(MD);
62 PlaceholderBases.insert(NewPB, InsertToken);
Represents a static or instance method of a struct/union/class.
Represents a prvalue temporary that is written into memory so that a reference can bind to it.
Represents a parameter to a function.
Represent the declaration of a variable (in which case it is an lvalue) a function (in which case it ...
const clang::CXXNewExpr * getAsNewAllocation() const
const clang::ValueDecl * getAsValueDecl() const
const clang::MaterializeTemporaryExpr * getAsMaterializeTemporaryExpr() const
const PlaceholderBase * getAsPlaceholderBase() const
void dump(llvm::raw_ostream &OS) const
void dump(llvm::raw_ostream &OS) const
Represents the base of a placeholder access path, which is either a function parameter or the implici...
static void Profile(llvm::FoldingSetNodeID &ID, KeyTy ParamOrMethod)