================ @@ -17615,31 +17615,28 @@ class SequenceChecker : public ConstEvaluatedExprVisitor<SequenceChecker> { return VisitExpr(CCE); // In C++11, list initializations are sequenced. - SmallVector<SequenceTree::Seq, 32> Elts; - SequenceTree::Seq Parent = Region; - for (CXXConstructExpr::const_arg_iterator I = CCE->arg_begin(), - E = CCE->arg_end(); - I != E; ++I) { - Region = Tree.allocate(Parent); - Elts.push_back(Region); - Visit(*I); - } - - // Forget that the initializers are sequenced. - Region = Parent; - for (unsigned I = 0; I < Elts.size(); ++I) - Tree.merge(Elts[I]); + SequenceExpressionsInOrder({CCE->getArgs(), CCE->getNumArgs()}); ---------------- shafik wrote:
I took me a bit of checking to convince myself this was doing the right thing. It might be nice to refactor `CXXConstructExpr` to have an a member that does the same as `ILE->inits()` and returns an `ArrayRef`. It looks like do similar things to create an `ArrayRef` in other places as well but probably should be a second PR. Maybe change this to `llvm::ArrayRef(CCE->getArgs(), CCE->getNumArgs())` to make it more explicit for now. https://github.com/llvm/llvm-project/pull/83476 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits