================ @@ -7676,10 +7676,26 @@ CGObjCNonFragileABIMac::GetInterfaceEHType(const ObjCInterfaceDecl *ID, } llvm::Value *VTableIdx = llvm::ConstantInt::get(CGM.Int32Ty, 2); + llvm::Constant *VTablePtr = llvm::ConstantExpr::getInBoundsGetElementPtr( + VTableGV->getValueType(), VTableGV, VTableIdx); + ConstantInitBuilder builder(CGM); auto values = builder.beginStruct(ObjCTypes.EHTypeTy); - values.add(llvm::ConstantExpr::getInBoundsGetElementPtr( - VTableGV->getValueType(), VTableGV, VTableIdx)); + + if (auto &Schema = + CGM.getCodeGenOpts().PointerAuth.CXXTypeInfoVTablePointer) { + uint32_t discrimination = 0; + if (Schema.hasOtherDiscrimination()) { + assert(Schema.getOtherDiscrimination() == + PointerAuthSchema::Discrimination::Constant); + discrimination = Schema.getConstantDiscrimination(); + } + values.addSignedPointer( + VTablePtr, Schema.getKey(), Schema.isAddressDiscriminated(), + llvm::ConstantInt::get(CGM.IntPtrTy, discrimination)); ---------------- ojhunt wrote:
50/50 this code predates us having that code \o/ https://github.com/llvm/llvm-project/pull/135562 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits