xazax.hun added inline comments.
================ Comment at: clang/lib/Analysis/FlowSensitive/DataflowEnvironment.cpp:248-258 + for (unsigned ArgIndex = 0; ArgIndex < NumArgs; ++ParamIt, ++ArgIndex) { assert(ParamIt != FuncDecl->param_end()); - const Expr *Arg = *ArgIt; - auto *ArgLoc = Env.getStorageLocation(*Arg, SkipPast::Reference); + const Expr *Arg; + if (const auto *ConstructExpr = dyn_cast<CXXConstructExpr>(Call)) { + Arg = ConstructExpr->getArg(ArgIndex); + } else if (const auto *NonConstructExpr = dyn_cast<CallExpr>(Call)) { ---------------- I think the more idiomatic solution in Clang is to create an ArrayRef for the arguments from the `ConstructExpr` and the `CallExpr`. The args should be stored in a continuous memory area in both cases so you should be able to create the ArrayRef in constant time and you would no longer need to have these pesky if statements in your loop. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D131438/new/ https://reviews.llvm.org/D131438 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits