================
@@ -144,33 +144,29 @@ void CIRGenVTables::createVTableInitializer(cir::GlobalOp
&vtableOp,
layout.getAddressPointIndices();
unsigned nextVTableThunkIndex = 0;
- if (layout.getNumVTables() > 1)
- cgm.errorNYI("emitVTableDefinitions: multiple vtables");
-
- // We'll need a loop here to handle multiple vtables, but for now we only
- // support one.
- unsigned vtableIndex = 0;
- size_t vtableStart = layout.getVTableOffset(vtableIndex);
- size_t vtableEnd = vtableStart + layout.getVTableSize(vtableIndex);
-
- // Build a ConstArrayAttr of the vtable components.
- llvm::SmallVector<mlir::Attribute> components;
- for (size_t componentIndex = vtableStart; componentIndex < vtableEnd;
- ++componentIndex) {
- components.push_back(
- getVTableComponent(layout, componentIndex, rtti, nextVTableThunkIndex,
- addressPoints[vtableIndex], vtableHasLocalLinkage));
- }
-
mlir::MLIRContext *mlirContext = &cgm.getMLIRContext();
- // Create a ConstArrayAttr to hold the components.
- auto arr = cir::ConstArrayAttr::get(
- cir::ArrayType::get(componentType, components.size()),
- mlir::ArrayAttr::get(mlirContext, components));
+ SmallVector<mlir::Attribute> vtables;
+ for (auto [vtableIndex, addressPoint] : llvm::enumerate(addressPoints)) {
+ // Build a ConstArrayAttr of the vtable components.
+ size_t vtableStart = layout.getVTableOffset(vtableIndex);
+ size_t vtableEnd = vtableStart + layout.getVTableSize(vtableIndex);
+ llvm::SmallVector<mlir::Attribute> components;
+ for (size_t componentIndex = vtableStart; componentIndex < vtableEnd;
----------------
Andres-Salamanca wrote:
```suggestion
for (size_t componentIndex : llvm::seq(vtableStart, vtableEnd))
```
I think `llvm::seq` makes this loop shorter.
https://github.com/llvm/llvm-project/pull/155027
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits