diff options
Diffstat (limited to 'lib/CodeGen/CGCXXABI.h')
| -rw-r--r-- | lib/CodeGen/CGCXXABI.h | 31 | 
1 files changed, 15 insertions, 16 deletions
diff --git a/lib/CodeGen/CGCXXABI.h b/lib/CodeGen/CGCXXABI.h index 65b50e14f436d..3a9c3b3474394 100644 --- a/lib/CodeGen/CGCXXABI.h +++ b/lib/CodeGen/CGCXXABI.h @@ -1,9 +1,8 @@  //===----- CGCXXABI.h - Interface to C++ ABIs -------------------*- C++ -*-===//  // -//                     The LLVM Compiler Infrastructure -// -// This file is distributed under the University of Illinois Open Source -// License. See LICENSE.TXT for details. +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception  //  //===----------------------------------------------------------------------===//  // @@ -137,10 +136,6 @@ public:      RAA_Indirect    }; -  /// Returns true if C++ allows us to copy the memory of an object of type RD -  /// when it is passed as an argument. -  bool canCopyArgument(const CXXRecordDecl *RD) const; -    /// Returns how an argument of the given record type should be passed.    virtual RecordArgABI getRecordArgABI(const CXXRecordDecl *RD) const = 0; @@ -310,7 +305,7 @@ public:    /// adding any required parameters.  For convenience, ArgTys has been    /// initialized with the type of 'this'.    virtual AddedStructorArgs -  buildStructorSignature(const CXXMethodDecl *MD, StructorType T, +  buildStructorSignature(GlobalDecl GD,                           SmallVectorImpl<CanQualType> &ArgTys) = 0;    /// Returns true if the given destructor type should be emitted as a linkonce @@ -383,7 +378,7 @@ public:    virtual void EmitDestructorCall(CodeGenFunction &CGF,                                    const CXXDestructorDecl *DD, CXXDtorType Type,                                    bool ForVirtualBase, bool Delegating, -                                  Address This) = 0; +                                  Address This, QualType ThisTy) = 0;    /// Emits the VTable definitions required for the given record type.    virtual void emitVTableDefinitions(CodeGenVTables &CGVT, @@ -426,11 +421,15 @@ public:                                               llvm::Type *Ty,                                               SourceLocation Loc) = 0; +  using DeleteOrMemberCallExpr = +      llvm::PointerUnion<const CXXDeleteExpr *, const CXXMemberCallExpr *>; +    /// Emit the ABI-specific virtual destructor call. -  virtual llvm::Value * -  EmitVirtualDestructorCall(CodeGenFunction &CGF, const CXXDestructorDecl *Dtor, -                            CXXDtorType DtorType, Address This, -                            const CXXMemberCallExpr *CE) = 0; +  virtual llvm::Value *EmitVirtualDestructorCall(CodeGenFunction &CGF, +                                                 const CXXDestructorDecl *Dtor, +                                                 CXXDtorType DtorType, +                                                 Address This, +                                                 DeleteOrMemberCallExpr E) = 0;    virtual void adjustCallArgsForDestructorThunk(CodeGenFunction &CGF,                                                  GlobalDecl GD, @@ -557,7 +556,7 @@ public:    /// \param Dtor - a function taking a single pointer argument    /// \param Addr - a pointer to pass to the destructor function.    virtual void registerGlobalDtor(CodeGenFunction &CGF, const VarDecl &D, -                                  llvm::Constant *Dtor, +                                  llvm::FunctionCallee Dtor,                                    llvm::Constant *Addr) = 0;    /*************************** thread_local initialization ********************/ @@ -589,7 +588,7 @@ public:    /// Emit a single constructor/destructor with the given type from a C++    /// constructor Decl. -  virtual void emitCXXStructor(const CXXMethodDecl *MD, StructorType Type) = 0; +  virtual void emitCXXStructor(GlobalDecl GD) = 0;    /// Load a vtable from This, an object of polymorphic type RD, or from one of    /// its virtual bases if it does not have its own vtable. Returns the vtable  | 
