Lines Matching defs:RD
53 bool VisitRecordDecl(const RecordDecl *RD) {
54 Checker->visitRecord(RD);
72 void visitRecord(const RecordDecl *RD, uint64_t PadMultiplier = 1) const {
73 if (shouldSkipDecl(RD))
78 if (!(RD = RD->getDefinition()))
85 if (auto *CXXRD = dyn_cast<CXXRecordDecl>(RD))
90 auto &ASTContext = RD->getASTContext();
91 const ASTRecordLayout &RL = ASTContext.getASTRecordLayout(RD);
94 CharUnits BaselinePad = calculateBaselinePad(RD, ASTContext, RL);
101 calculateOptimalPad(RD, ASTContext, RL);
109 reportRecord(RD, BaselinePad, OptimalPad, OptimalFieldsOrder);
131 bool shouldSkipDecl(const RecordDecl *RD) const {
134 if (!(RD = RD->getDefinition()))
136 auto Location = RD->getLocation();
148 if (RD->isUnion())
150 if (auto *CXXRD = dyn_cast<CXXRecordDecl>(RD)) {
170 else if (RD->field_empty())
185 if (llvm::any_of(RD->fields(), IsTrickyField))
190 static CharUnits calculateBaselinePad(const RecordDecl *RD,
195 for (const FieldDecl *FD : RD->fields()) {
232 calculateOptimalPad(const RecordDecl *RD, const ASTContext &ASTContext,
264 std::transform(RD->field_begin(), RD->field_end(),
311 const RecordDecl *RD, CharUnits BaselinePad, CharUnits OptimalPad,
316 Os << QualType::getAsString(RD->getTypeForDecl(), Qualifiers(),
320 if (auto *TSD = dyn_cast<ClassTemplateSpecializationDecl>(RD)) {
339 PathDiagnosticLocation::create(RD, BR->getSourceManager());
341 Report->setDeclWithIssue(RD);
342 Report->addRange(RD->getSourceRange());