================ @@ -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)); ---------------- rjmccall wrote:
I think you can just call the `addSignedPointer` variant that takes a schema and pass null values for the decl and type. 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