27 bool forVirtualBase,
bool delegating,
CallArgList &args) {
30 for (
auto [idx, prefixArg] : llvm::enumerate(addedArgs.
prefix))
31 args.insert(args.begin() + 1 + idx,
33 for (
const auto &arg : addedArgs.
suffix)
47 &
cgm.getASTContext().Idents.get(
"this"),
49 params.push_back(thisDecl);
61 return cgm.getCIRLinkageForDeclarator(dtor, linkage,
73 mlir::Value thisPtr) {
75 assert(
getThisDecl(cgf) &&
"no 'this' variable for function");
mlir::Value getPointer() const
mlir::Type getElementType() const
AddedStructorArgCounts addImplicitConstructorArgs(CIRGenFunction &cgf, const CXXConstructorDecl *d, CXXCtorType type, bool forVirtualBase, bool delegating, CallArgList &args)
clang::ImplicitParamDecl * getThisDecl(CIRGenFunction &cgf)
virtual AddedStructorArgs getImplicitConstructorArgs(CIRGenFunction &cgf, const CXXConstructorDecl *d, CXXCtorType type, bool forVirtualBase, bool delegating)=0
void setCXXABIThisValue(CIRGenFunction &cgf, mlir::Value thisPtr)
mlir::Value loadIncomingCXXThis(CIRGenFunction &cgf)
Loads the incoming C++ this pointer as it was passed by the caller.
virtual cir::GlobalLinkageKind getCXXDestructorLinkage(GVALinkage linkage, const CXXDestructorDecl *dtor, CXXDtorType dt) const
void buildThisParam(CIRGenFunction &cgf, FunctionArgList ¶ms)
Build a parameter variable suitable for 'this'.
clang::GlobalDecl curGD
The GlobalDecl for the current function being compiled or the global variable currently being initial...
ImplicitParamDecl * cxxabiThisDecl
CXXThisDecl - When generating code for a C++ member function, this will hold the implicit 'this' decl...
Address getAddrOfLocalVar(const clang::VarDecl *vd)
Return the address of a local variable.
mlir::Location getLoc(clang::SourceLocation srcLoc)
Helpers to convert Clang's SourceLocation to a MLIR Location.
CIRGenBuilderTy & getBuilder()
mlir::Value cxxabiThisValue
void add(RValue rvalue, clang::QualType type)
Type for representing both the decl and type of parameters to a function.
static RValue get(mlir::Value v)
Represents a C++ constructor within a class.
Represents a C++ destructor within a class.
SourceLocation getLocation() const
const Decl * getDecl() const
static ImplicitParamDecl * Create(ASTContext &C, DeclContext *DC, SourceLocation IdLoc, IdentifierInfo *Id, QualType T, ImplicitParamKind ParamKind)
Create implicit parameter.
const internal::VariadicAllOfMatcher< Type > type
Matches Types in the clang AST.
The JSON file list parser is used to communicate input to InstallAPI.
CXXCtorType
C++ constructor types.
GVALinkage
A more specific kind of linkage than enum Linkage.
CXXDtorType
C++ destructor types.
U cast(CodeGen::Address addr)
@ CXXThis
Parameter for C++ 'this' argument.
static bool cxxabiThisAlignment()
Similar to AddedStructorArgs, but only notes the number of additional arguments.
Additional implicit arguments to add to the beginning (Prefix) and end (Suffix) of a constructor / de...
llvm::SmallVector< Arg, 1 > prefix
llvm::SmallVector< Arg, 1 > suffix