rsmith added inline comments.
================ Comment at: clang/lib/AST/FormatString.cpp:407 + if ((isSizeT() || isPtrdiffT()) && + C.getTargetInfo().getTriple().isOSMSVCRT() && + C.getTargetInfo().getTriple().isArch32Bit()) ---------------- amccarth wrote: > I'm not convinced `isOSMSVCRT` is the right check. The troubling typedefs > are [[ > https://docs.microsoft.com/en-us/windows/win32/winprog/windows-data-types#size-t > | `SIZE_T` and `SSIZE_T` ]], which come from the Windows API and are > unrelated to Microsoft's C run-time library. I think `isOSWindows` would be > more precise. We already care about typedef-names used to spell argument types in some cases (see `namedTyoeToLengthModifier`. If this is a case of MSVC providing a typedef that people *think* is `size_t`, that is always the same size and representation as `size_t`, and that is intended to be fully interchangeable with `size_t`, but sometimes is a different type, then it might be reasonable to detect whether the type was spelled using that `SIZE_T` typedef when targeting Windows, and exempt only that case. I mean, assuming that we want to allow such code at all and not push people to cast explicitly from `SIZE_T` to `size_t`. I don't have a strong opinion on that; I think it rather depends on intended idiomatic usage on that platform. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D78508/new/ https://reviews.llvm.org/D78508 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits