[PATCH] D57948: [Sema] Fix a regression introduced in "[AST][Sema] Remove CallExpr::setNumArgs"
Aaron Ballman via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Mon Feb 11 05:37:04 PST 2019
aaron.ballman added inline comments.
================
Comment at: lib/AST/Expr.cpp:1272-1274
+ for (unsigned I = NumArgs; I != NumArgsAllocated; ++I) {
+ TrailingArgs[I] = nullptr;
}
----------------
Could use `std::fill()` here to remove the for-loop. Your call whether that looks cleaner or not.
================
Comment at: lib/Sema/SemaExpr.cpp:5810
+ // However it may not have been constructed with enough storage. In this
+ // case rebuild the node with enough storage. The waste of space is
+ // immaterial since this only happens when some typos were corrected.
----------------
case rebuild -> case, rebuild
================
Comment at: lib/Sema/SemaOverload.cpp:12909-12910
+ call->setNumArgsUnsafe(
+ std::max<unsigned>(Args.size(), proto->getNumParams()));
if (ConvertArgumentsForCall(call, op, nullptr, proto, Args, RParenLoc))
----------------
Oye. When we had to call this hack in one place, I could hold my nose, but having to call it randomly any time something like a call expression is created is a bit too much for me.
How awful is the alternative fix, such as making things resilient to null parameters in `BuildResolvedCallExpr()`?
Repository:
rC Clang
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D57948/new/
https://reviews.llvm.org/D57948
More information about the cfe-commits
mailing list