[clang] [CIR] Add support for emitting VTTs and related ojects (PR #155721)

via cfe-commits cfe-commits at lists.llvm.org
Mon Sep 1 19:55:38 PDT 2025


================
@@ -226,6 +289,109 @@ cir::GlobalLinkageKind CIRGenModule::getVTableLinkage(const CXXRecordDecl *rd) {
   return cir::GlobalLinkageKind::ExternalLinkage;
 }
 
+cir::GlobalOp CIRGenVTables::getAddrOfVTT(const CXXRecordDecl *rd) {
+  assert(rd->getNumVBases() && "Only classes with virtual bases need a VTT");
+
+  SmallString<256> outName;
+  llvm::raw_svector_ostream out(outName);
+  cast<ItaniumMangleContext>(cgm.getCXXABI().getMangleContext())
+      .mangleCXXVTT(rd, out);
+  StringRef name = outName.str();
+
+  // This will also defer the definition of the VTT.
+  (void)cgm.getCXXABI().getAddrOfVTable(rd, CharUnits());
----------------
Andres-Salamanca wrote:

What do you think of using `[[maybe_unused]]` here?

https://github.com/llvm/llvm-project/pull/155721


More information about the cfe-commits mailing list