njames93 marked an inline comment as done. njames93 added inline comments.
================ Comment at: clang-tools-extra/clang-tidy/cppcoreguidelines/ProTypeVarargCheck.cpp:21 +// FIXME: Add any more builtin variadics that shouldn't trigger this +static constexpr StringRef AllowedVariadics[] = { ---------------- aaron.ballman wrote: > njames93 wrote: > > aaron.ballman wrote: > > > How would we know which builtins should or should not trigger this? Can > > > we add that information to this comment (or, better yet, just fix the > > > fixme up front)? > > Good point, its more a case that I don't know all the variadic builtins > > clang supports. Those ones I included are just the ones you find in the gcc > > documentation. Shall I just remove the Fixme completely, If there is > > another one that's been missed we can address that later > Taking a look at Builtins.def shows quite a few more that likely should be > added to the list. I think we should probably have the initial commit > covering anything that's a C standard library function/macro that ends with > "." in its builtin type signature where the C API isn't variadic. For > instance, `__builtin_isfinite`, `__builtin_isinf`, etc. I'm fine if we don't > vet every builtin we support (that's a large amount of work), but we should > be able to cover the most common cases where there's a specification to > compare against. ``` BUILTIN(__builtin_isgreater , "i.", "Fnct") BUILTIN(__builtin_isgreaterequal, "i.", "Fnct") BUILTIN(__builtin_isless , "i.", "Fnct") BUILTIN(__builtin_islessequal , "i.", "Fnct") BUILTIN(__builtin_islessgreater , "i.", "Fnct") BUILTIN(__builtin_isunordered , "i.", "Fnct") BUILTIN(__builtin_fpclassify, "iiiiii.", "Fnct") BUILTIN(__builtin_isfinite, "i.", "Fnct") BUILTIN(__builtin_isinf, "i.", "Fnct") BUILTIN(__builtin_isinf_sign, "i.", "Fnct") BUILTIN(__builtin_isnan, "i.", "Fnct") BUILTIN(__builtin_isnormal, "i.", "Fnct") BUILTIN(__builtin_signbit, "i.", "Fnct") BUILTIN(__builtin_constant_p, "i.", "nctu") BUILTIN(__builtin_classify_type, "i.", "nctu") BUILTIN(__builtin_va_start, "vA.", "nt") BUILTIN(__builtin_stdarg_start, "vA.", "nt") BUILTIN(__builtin_assume_aligned, "v*vC*z.", "nc") BUILTIN(__builtin_fprintf, "iP*cC*.", "Fp:1:") BUILTIN(__builtin_printf, "icC*.", "Fp:0:") BUILTIN(__builtin_snprintf, "ic*zcC*.", "nFp:2:") BUILTIN(__builtin___snprintf_chk, "ic*zizcC*.", "Fp:4:") BUILTIN(__builtin___sprintf_chk, "ic*izcC*.", "Fp:3:") BUILTIN(__builtin___fprintf_chk, "iP*icC*.", "Fp:2:") BUILTIN(__builtin___printf_chk, "iicC*.", "Fp:1:") BUILTIN(__builtin_prefetch, "vvC*.", "nc") BUILTIN(__builtin_shufflevector, "v." , "nct") BUILTIN(__builtin_convertvector, "v." , "nct") BUILTIN(__builtin_call_with_static_chain, "v.", "nt") BUILTIN(__builtin_annotation, "v.", "tn") BUILTIN(__builtin_add_overflow, "b.", "nt") BUILTIN(__builtin_sub_overflow, "b.", "nt") BUILTIN(__builtin_mul_overflow, "b.", "nt") BUILTIN(__builtin_preserve_access_index, "v.", "t") BUILTIN(__builtin_nontemporal_store, "v.", "t") BUILTIN(__builtin_nontemporal_load, "v.", "t") BUILTIN(__builtin_os_log_format_buffer_size, "zcC*.", "p:0:nut") BUILTIN(__builtin_os_log_format, "v*v*cC*.", "p:0:nt") BUILTIN(__builtin_ms_va_start, "vc*&.", "nt")``` That's all the variadics inside `Builtin.def` that are called `__builtin...`. Would you suggest including all those apart from the va, print or format related ones Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D80887/new/ https://reviews.llvm.org/D80887 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits