Quuxplusone added inline comments.

================
Comment at: clang/lib/Sema/SemaStmt.cpp:3140
+/// \param ReturnType This is the return type of the function.
+void Sema::updNRVOResultWithRetType(NRVOResult &Res, QualType ReturnType) {
+  if (!Res.Candidate)
----------------
mizvekov wrote:
> aaronpuchert wrote:
> > mizvekov wrote:
> > > aaronpuchert wrote:
> > > > `NRVOResult` seems to be small, why not make this a proper function and 
> > > > let it return the result?
> > > It does use the result parameter as input and output. This function can 
> > > only "downgrade" a result it received previously.
> > > I could make it receive a result and return the result, but then would 
> > > probably just use it like this:
> > > ```
> > > NRVORes = updNRVOResultWithRetType(NRVORes, ...);
> > > ```
> > > Do you think that looks clearer?
> > Yes, that would seem more natural to me. Technically a caller could decide 
> > to not use the same variable in both places, for example it could pass a 
> > temporary or pass the result on directly.
> But for this function, I don't see how it could make sense to actually use it 
> like that.
> 
> You are either using it in a context where you don't have a ReturnType 
> (throw, co_return), and you only care about the initial NRVOResult and don't 
> call this function at all, or you are in a return statement, where you will 
> call this function passing the initial NRVOResult, which will then have no 
> further utility.
I haven't looked at the code, but FWIW, I'm always in favor of more 
"function-style" functions. Which would you rather deal with — `void 
square(int& x)` or `int square(int x)`? The same rationale applies uniformly 
everywhere. Even if we are "consuming" the argument in this particular 
instance, that might change after another few years of maintenance; and 
regardless, it might be easier for the maintainer to understand 
"function-style" code even if they aren't going to change it.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D99696/new/

https://reviews.llvm.org/D99696

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to