diff --git a/lib/IRGen/GenMeta.cpp b/lib/IRGen/GenMeta.cpp index c5fc0b6f837fa..1d6b23d4ee9d6 100644 --- a/lib/IRGen/GenMeta.cpp +++ b/lib/IRGen/GenMeta.cpp @@ -6940,11 +6940,13 @@ namespace { } void addValueWitnessTable() { + llvm::Constant* vwtPointer = nullptr; if (auto cd = Target->getClangDecl()) if (auto rd = dyn_cast(cd)) if (rd->isAnonymousStructOrUnion()) - return; - auto vwtPointer = emitValueWitnessTable(/*relative*/ false).getValue(); + vwtPointer = llvm::Constant::getNullValue(IGM.WitnessTablePtrTy); + if (!vwtPointer) + vwtPointer = emitValueWitnessTable(/*relative*/ false).getValue(); B.addSignedPointer(vwtPointer, IGM.getOptions().PointerAuth.ValueWitnessTable, PointerAuthEntity());