================
@@ -1521,6 +1521,101 @@ ConstantEmitter::~ConstantEmitter() {
"not finalized after being initialized for non-abstract emission");
}
+static mlir::TypedAttr emitNullConstantForBase(CIRGenModule &cgm,
+ mlir::Type baseType,
+ const CXXRecordDecl *baseDecl);
+
+static mlir::TypedAttr emitNullConstant(CIRGenModule &cgm, const RecordDecl
*rd,
+ bool asCompleteObject) {
+ const CIRGenRecordLayout &layout = cgm.getTypes().getCIRGenRecordLayout(rd);
+ mlir::Type ty = (asCompleteObject ? layout.getCIRType()
+ : layout.getBaseSubobjectCIRType());
+ auto recordTy = cast<cir::RecordType>(ty);
+
+ unsigned numElements = recordTy.getNumElements();
+ SmallVector<mlir::Attribute> elements(numElements);
+
+ auto cxxrd = dyn_cast<CXXRecordDecl>(rd);
+ // Fill in all the bases.
+ if (cxxrd) {
+ for (const auto &base : cxxrd->bases()) {
----------------
erichkeane wrote:
```suggestion
for (const CXXBaseSpecifier &base : cxxrd->bases()) {
```
https://github.com/llvm/llvm-project/pull/168646
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits