================ @@ -2419,8 +2419,13 @@ Value *ScalarExprEmitter::VisitCastExpr(CastExpr *CE) { return Visit(const_cast<Expr*>(E)); case CK_NoOp: { - return CE->changesVolatileQualification() ? EmitLoadOfLValue(CE) - : Visit(const_cast<Expr *>(E)); + if (CE->changesVolatileQualification()) + return EmitLoadOfLValue(CE); + auto V = Visit(const_cast<Expr *>(E)); + if (CGF.CGM.getCodeGenOpts().PointerAuth.CXXMemberFunctionPointers && + CE->getType()->isMemberFunctionPointerType()) + V = CGF.CGM.getCXXABI().EmitMemberPointerConversion(CGF, CE, V); + return V; ---------------- ahatanak wrote:
Sema does use `CK_NoOp` for those, but we don't need to re-sign function pointers because the presence of `noexcept` on a function type doesn't change the discriminator. The function that encodes the function type (`encodeTypeForFunctionPointerAuth`) encodes the parameter and return types, but ignores `noexcept`. https://github.com/llvm/llvm-project/pull/109056 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits