Quuxplusone marked 4 inline comments as done. Quuxplusone added inline comments.
================ Comment at: lib/Sema/SemaStmt.cpp:2970 + FunctionDecl *FD = Step.Function.Function; + if (isa<CXXConstructorDecl>(FD)) { + // C++14 [class.copy]p32: ---------------- rtrieu wrote: > Use early exit here: > > > ``` > if (!isa<CXXConstructorDecl>(FD) > continue; > > // old if-block code > ``` I'd prefer not to do this, since D43322 is going to change this code into "if isa-red-fish... else if isa-blue-fish...". Therefore I think it makes sense to keep this intermediate stage as "if isa-red-fish...", rather than changing it into "if not-isa-red-fish continue... otherwise..." If you really want this, I can change it; but it's just going to change back in D43322, and the goal of this patch was to make D43322 smaller. ================ Comment at: lib/Sema/SemaStmt.cpp:2999-3000 - // expression node to persist. - Value = ImplicitCastExpr::Create(Context, Value->getType(), CK_NoOp, - Value, nullptr, VK_XValue); ---------------- rtrieu wrote: > At this point, the variable Value is updated. Value is scoped to this > function, and used again after this code. In your change, there is a new > Value variable in the static function. Only that variable is updated and not > this one, making this a change in behavior. Good catch! I've addressed this now by making the parameter `Expr *&Value`; but I'd be open to better approaches. Particularly because I still don't know what to do about the "unnecessary promoting `Value` to the heap" that will happen in D43322. Repository: rC Clang https://reviews.llvm.org/D43898 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits