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 void *InsertPos =
nullptr;
44 PlaceholderBases.FindNodeOrInsertPos(ID, InsertPos))
49 PlaceholderBases.InsertNode(NewPB, InsertPos);
53const PlaceholderBase *
54LoanManager::getOrCreatePlaceholderBase(
const CXXMethodDecl *MD) {
55 llvm::FoldingSetNodeID ID;
57 void *InsertPos =
nullptr;
58 if (PlaceholderBase *Existing =
59 PlaceholderBases.FindNodeOrInsertPos(ID, InsertPos))
62 void *Mem = LoanAllocator.Allocate<PlaceholderBase>();
63 PlaceholderBase *NewPB =
new (Mem) PlaceholderBase(MD);
64 PlaceholderBases.InsertNode(NewPB, InsertPos);
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...