================ @@ -1870,6 +1870,28 @@ bool Sema::IsFunctionConversion(QualType FromType, QualType ToType, FromFn = QT->getAs<FunctionType>(); Changed = true; } + + // For C, when called from checkPointerTypesForAssignment, + // we need not to alter FromFn, or else even an innocuous cast + // like dropping effects will fail. In C++ however we do want to + // alter FromFn. TODO: Is this correct? + if (getLangOpts().CPlusPlus) { + FromFPT = + dyn_cast<FunctionProtoType>(FromFn); // in case FromFn changed above ---------------- dougsonos wrote:
Interesting, I copied this verbatim from just above: ``` // Drop 'noexcept' if not present in target type. if (const auto *FromFPT = dyn_cast<FunctionProtoType>(FromFn)) { const auto *ToFPT = cast<FunctionProtoType>(ToFn); ``` Is this wrong too? https://github.com/llvm/llvm-project/pull/84983 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits