[PATCH] D126903: [clang] Add support for __builtin_memset_inline
Guillaume Chatelet via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Fri Jun 3 01:27:44 PDT 2022
gchatelet marked 2 inline comments as done.
gchatelet added inline comments.
================
Comment at: clang/lib/Sema/SemaChecking.cpp:2293-2315
+ case Builtin::BI__builtin_memset_inline: {
+ if (checkArgCount(*this, TheCall, 3))
+ return ExprError();
+ auto ArgArrayConversionFailed = [&](unsigned Arg) {
+ ExprResult ArgExpr =
+ DefaultFunctionArrayLvalueConversion(TheCall->getArg(Arg));
+ if (ArgExpr.isInvalid())
----------------
rsmith wrote:
> This custom checking seems unnecessary and also insufficient: you're not enforcing that the arguments have the right types. We should convert the arguments to this builtin in the same way we'd convert arguments for a normally-declared function, which you can achieve by removing the "t" flag from the builtin definition and removing all of this logic (except for the nonnull checking, which I don't think we have a way to model in Builtins.def yet).
>
> Please do the same to `__builtin_memcpy_inline`, which is wrong in the same way. (For example, `__builtin_memcpy_inline(1, 2, 3)` crashes in code generation because it fails to perform proper conversions and type-checking on its arguments.)
Thx!
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D126903/new/
https://reviews.llvm.org/D126903
More information about the cfe-commits
mailing list