[llvm-branch-commits] [clang] [analyzer][NFC] Index parameter lookups by argument position (PR #221977)
DonĂ¡t Nagy via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Tue Sep 8 10:54:27 PDT 2026
================
@@ -577,14 +577,13 @@ ProgramStateRef CallAndMessageChecker::checkArgInitializedness(
const BugType &BT = isa<ObjCMethodCall>(Call) ? MsgArgBug : CallArgBug;
- const FunctionDecl *FD = dyn_cast_or_null<FunctionDecl>(D);
+ ArrayRef<ParmVarDecl *> Params = Call.parameters();
for (unsigned i = 0, e = Call.getNumArgs(); i != e; ++i) {
- const ParmVarDecl *ParamDecl = nullptr;
- if (FD && i < FD->getNumParams())
- ParamDecl = FD->getParamDecl(i);
+ // For variadic functions a corresponding parameter decl might not exist.
+ const ParmVarDecl *PVD = i < Params.size() ? Params[i] : nullptr;
----------------
NagyDonat wrote:
Do I understand it here that you're indexing `Call.parameters()` with a `CallEvent`-specific index (`CallArgIdx`)? Is it the correct index to use here (e.g. instead of `DeclParamIdx`, which is a _parameter_ index)?
If the "native" `CallEvent`-specific index is used for both `Call.parameters()` and the arguments of the call, then try to replace `CallArgIdx` etc. with a name like `ImplIdx` or `NativeIdx` that does not contain either `Arg` or `Param`.
Also it would be nice to have a comment block that describes that there are three indexing conventions, explains their customary names (which should be used very consistently!) and for each of them lists the places where it should be used.
https://github.com/llvm/llvm-project/pull/221977
More information about the llvm-branch-commits
mailing list