[Clang] Loop over FieldDecls instead of all Decls (#89453)
Only FieldDecls are of importance here. A struct defined within another struct has the same semantics as if it were defined outside of the struct. So there's no need to look into RecordDecls that aren't a field.
This commit is contained in:
@@ -861,14 +861,13 @@ const FieldDecl *CodeGenFunction::FindFlexibleArrayMemberField(
|
||||
static unsigned CountCountedByAttrs(const RecordDecl *RD) {
|
||||
unsigned Num = 0;
|
||||
|
||||
for (const Decl *D : RD->decls()) {
|
||||
if (const auto *FD = dyn_cast<FieldDecl>(D);
|
||||
FD && FD->getType()->isCountAttributedType()) {
|
||||
for (const FieldDecl *FD : RD->fields()) {
|
||||
if (FD->getType()->isCountAttributedType())
|
||||
return ++Num;
|
||||
}
|
||||
|
||||
if (const auto *Rec = dyn_cast<RecordDecl>(D))
|
||||
Num += CountCountedByAttrs(Rec);
|
||||
QualType Ty = FD->getType();
|
||||
if (Ty->isRecordType())
|
||||
Num += CountCountedByAttrs(Ty->getAsRecordDecl());
|
||||
}
|
||||
|
||||
return Num;
|
||||
|
||||
Reference in New Issue
Block a user