================
@@ -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

Reply via email to