================ @@ -2097,6 +2097,15 @@ void ItaniumCXXABI::emitVTableDefinitions(CodeGenVTables &CGVT, // Set the correct linkage. VTable->setLinkage(Linkage); + // Track ExternalLinkage vtable definitions so moveLazyEmissionStates() can + // tell the next PTU not to re-emit them. We only do this for ExternalLinkage + // because the JIT reliably exports strong symbols cross-module. + // WeakODR/LinkOnceODR vtables (e.g. inline key functions, template + // instantiations) are not reliably cross-module resolvable in the JIT, so + // later PTUs must re-emit their own copy. + if (Linkage == llvm::GlobalValue::ExternalLinkage) + CGM.markVTableEmitted(RD); ---------------- conrade-ctc wrote:
yup, we can make it abi independent, just pushed the commit. this leaves the ItaniumCXXABI out of it, good catch. https://github.com/llvm/llvm-project/pull/185648 _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
