Lines Matching defs:RD
54 bool VisitRecordDecl(RecordDecl *RD) override {
55 Checker->visitRecord(RD);
73 void visitRecord(const RecordDecl *RD, uint64_t PadMultiplier = 1) const {
74 if (shouldSkipDecl(RD))
79 if (!(RD = RD->getDefinition()))
86 if (auto *CXXRD = dyn_cast<CXXRecordDecl>(RD))
91 auto &ASTContext = RD->getASTContext();
92 const ASTRecordLayout &RL = ASTContext.getASTRecordLayout(RD);
95 CharUnits BaselinePad = calculateBaselinePad(RD, ASTContext, RL);
102 calculateOptimalPad(RD, ASTContext, RL);
110 reportRecord(RD, BaselinePad, OptimalPad, OptimalFieldsOrder);
132 bool shouldSkipDecl(const RecordDecl *RD) const {
135 if (!(RD = RD->getDefinition()))
137 auto Location = RD->getLocation();
149 if (RD->isUnion())
151 if (auto *CXXRD = dyn_cast<CXXRecordDecl>(RD)) {
171 else if (RD->field_empty())
186 if (llvm::any_of(RD->fields(), IsTrickyField))
191 static CharUnits calculateBaselinePad(const RecordDecl *RD,
196 for (const FieldDecl *FD : RD->fields()) {
233 calculateOptimalPad(const RecordDecl *RD, const ASTContext &ASTContext,
265 std::transform(RD->field_begin(), RD->field_end(),
312 const RecordDecl *RD, CharUnits BaselinePad, CharUnits OptimalPad,
317 Os << QualType::getAsString(RD->getTypeForDecl(), Qualifiers(),
321 if (auto *TSD = dyn_cast<ClassTemplateSpecializationDecl>(RD)) {
340 PathDiagnosticLocation::create(RD, BR->getSourceManager());
342 Report->setDeclWithIssue(RD);
343 Report->addRange(RD->getSourceRange());