Lines Matching full:fields
81 // This is the simplest correct case: a class with no fields and one base in visitRecord()
83 // & fields might interact, so we don't bother dealing with them. in visitRecord()
84 // TODO: Support other combinations of base classes and fields. in visitRecord()
127 // TODO: Recurse into the fields to see if they have excess padding. in visitVariable()
153 // have fields. in shouldSkipDecl()
169 // How do you reorder fields if you haven't got any? in shouldSkipDecl()
185 if (llvm::any_of(RD->fields(), IsTrickyField)) in shouldSkipDecl()
195 for (const FieldDecl *FD : RD->fields()) { in calculateBaselinePad()
198 // set the same as the other fields addresses. in calculateBaselinePad()
204 // total because reordering fields won't fix that problem. in calculateBaselinePad()
222 /// 3. If no fields can fit, pad by rounding the current offset up to the
223 /// smallest alignment requirement of our fields. Measure and track the
227 /// 6. Go back to 2 if there are still unplaced fields.
251 SmallVector<FieldInfo, 20> Fields; in calculateOptimalPad() local
265 std::back_inserter(Fields), GatherSizesAndAlignments); in calculateOptimalPad()
266 llvm::sort(Fields); in calculateOptimalPad()
268 // so that we can just worry about the fields in our object. in calculateOptimalPad()
274 while (!Fields.empty()) { in calculateOptimalPad()
288 auto Iter = llvm::upper_bound(Fields, InsertPoint); in calculateOptimalPad()
289 if (Iter != Fields.begin()) { in calculateOptimalPad()
294 Fields.erase(Iter); in calculateOptimalPad()
299 CharUnits NextOffset = NewOffset.alignTo(Fields[0].Align); in calculateOptimalPad()
332 << "Optimal fields order: "; in reportRecord()
335 Os << "consider reordering the fields or adding explicit padding " in reportRecord()