Home | History | Annotate | Download | only in CodeGen

Lines Matching defs:Base

35     const CXXBaseSpecifier *Base = *I;
36 assert(!Base->isVirtual() && "Should not see virtual bases here!");
42 cast<CXXRecordDecl>(Base->getType()->getAs<RecordType>()->getDecl());
57 assert(PathBegin != PathEnd && "Base path should not be empty!");
71 /// Gets the address of a direct base class within a complete object.
79 const CXXRecordDecl *Base,
86 // Compute the offset of the virtual base.
90 Offset = Layout.getVBaseClassOffset(Base);
92 Offset = Layout.getBaseClassOffset(Base);
94 // Shift and cast down to the base type.
102 V = Builder.CreateBitCast(V, ConvertType(Base)->getPointerTo());
127 // Apply the base offset.
141 assert(PathBegin != PathEnd && "Base path should not be empty!");
146 // Get the virtual base.
157 // Get the base pointer type.
224 assert(PathBegin != PathEnd && "Base path should not be empty!");
277 /// base constructor/destructor with virtual bases.
286 const CXXRecordDecl *Base = cast<CXXMethodDecl>(GD.getDecl())->getParent();
292 // If the record matches the base, this is the complete ctor/dtor
293 // variant calling the base variant in a class with virtual bases.
294 if (RD == Base) {
296 "doing no-op VTT offset in base dtor/ctor?");
297 assert(!ForVirtualBase && "Can't have same class as virtual base!");
303 Layout.getVBaseClassOffset(Base) :
304 Layout.getBaseClassOffset(Base);
307 CGF.CGM.getVTables().getSubVTTIndex(RD, BaseSubobject(Base, BaseOffset));
325 /// Call the destructor for a direct base class.
329 CallBaseDtor(const CXXRecordDecl *Base, bool BaseIsVirtual)
330 : BaseClass(Base), BaseIsVirtual(BaseIsVirtual) {}
374 "Must have base initializer!");
384 // The base constructor doesn't construct virtual bases.
388 // If the initializer for the base (other than the constructor
640 /// complete-to-base constructor delegation optimization, i.e.
641 /// emitting the complete constructor as a simple call to the base
692 // Before we go any further, try the complete->base constructor
711 // Emit the constructor prologue, i.e. the base and member
721 // Emit any cleanup blocks associated with the member or base
732 /// base classes and non-static data members belonging to this constructor.
879 // If this is the complete variant, just invoke the base variant;
895 // Fallthrough: act like we're in the base variant.
965 /// destructor. This is to call destructors on members and base classes
995 const CXXBaseSpecifier &Base = *I;
997 = cast<CXXRecordDecl>(Base.getType()->getAs<RecordType>()->getDecl());
1016 const CXXBaseSpecifier &Base = *I;
1019 if (Base.isVirtual())
1022 CXXRecordDecl *BaseClassDecl = Base.getType()->getAsCXXRecordDecl();
1430 CodeGenFunction::InitializeVTablePointer(BaseSubobject Base,
1435 const CXXRecordDecl *RD = Base.getBase();
1445 CGM.getVTables().getSecondaryVirtualPointerIndex(VTableClass, Base);
1456 CGM.getVTableContext().getVTableLayout(VTableClass).getAddressPoint(Base);
1466 // We need to use the virtual base offset offset because the virtual base
1472 // We can just use the base offset in the complete class.
1473 NonVirtualOffset = Base.getBaseOffset();
1492 CodeGenFunction::InitializeVTablePointers(BaseSubobject Base,
1499 // If this base is a non-virtual primary base the address point has already
1502 // Initialize the vtable pointer for this base.
1503 InitializeVTablePointer(Base, NearestVBase, OffsetFromNearestVBase,
1507 const CXXRecordDecl *RD = Base.getBase();
1524 // Check if we've visited this virtual base before.
1537 BaseOffset = Base.getBaseOffset() + Layout.getBaseClassOffset(BaseDecl);
1574 static const CXXRecordDecl *getMostDerivedClassDecl(const Expr *Base) {
1575 const Expr *E = Base;
1625 static bool canDevirtualizeMemberFunctionCall(const Expr *Base,
1637 const CXXRecordDecl *MostDerivedClassDecl = getMostDerivedClassDecl(Base);
1651 Base = skipNoOpCastsAndParens(Base);
1652 if (const DeclRefExpr *DRE = dyn_cast<DeclRefExpr>(Base)) {
1662 if (isa<CXXConstructExpr>(Base))
1666 if (isa<CXXBindTemporaryExpr>(Base))
1670 if (const CallExpr *CE = dyn_cast<CallExpr>(Base))