rtrieu added inline comments.
================ Comment at: lib/Sema/SemaStmt.cpp:2953 + ExprResult &Res) +{ + ImplicitCastExpr AsRvalue(ImplicitCastExpr::OnStack, Value->getType(), ---------------- Opening brace should follow the closing paren on previous line. ================ Comment at: lib/Sema/SemaStmt.cpp:2963 + InitializationSequence Seq(S, Entity, Kind, InitExpr); + if (Seq) { + for (const InitializationSequence::Step &Step : Seq.steps()) { ---------------- Use early exit here: ``` if (!Seq) return; // rest of function ``` ================ Comment at: lib/Sema/SemaStmt.cpp:2965-2966 + for (const InitializationSequence::Step &Step : Seq.steps()) { + if (!(Step.Kind == InitializationSequence::SK_ConstructorInitialization || + Step.Kind == InitializationSequence::SK_UserConversion)) + continue; ---------------- Since you're simplifying the condition here, bring the not operator inside the parentheses. ``` if (Step.Kind != ... && Step.Kind != ...) ``` ================ Comment at: lib/Sema/SemaStmt.cpp:2970 + FunctionDecl *FD = Step.Function.Function; + if (isa<CXXConstructorDecl>(FD)) { + // C++14 [class.copy]p32: ---------------- Use early exit here: ``` if (!isa<CXXConstructorDecl>(FD) continue; // old if-block code ``` ================ Comment at: lib/Sema/SemaStmt.cpp:2999-3000 - // expression node to persist. - Value = ImplicitCastExpr::Create(Context, Value->getType(), CK_NoOp, - Value, nullptr, VK_XValue); ---------------- 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. 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