[clang] [NFC][Clang] Add `setExprs` overload to reduce some code duplication (PR #139749)
Erich Keane via cfe-commits
cfe-commits at lists.llvm.org
Tue May 13 12:41:22 PDT 2025
================
@@ -501,20 +501,28 @@ class OpenACCClauseWithExprs : public OpenACCClauseWithParams {
/// Used only for initialization, the leaf class can initialize this to
/// trailing storage.
- void setExprs(MutableArrayRef<Expr *> NewExprs) {
- assert(Exprs.empty() && "Cannot change Exprs list");
- Exprs = NewExprs;
+ void setExprs(MutableArrayRef<Expr *> NewStorage) {
+ assert(Storage.empty() && "Cannot change Exprs list");
+ Storage = NewStorage;
+ }
+
+ /// Used only for initialization, the leaf class can initialize this to
+ /// trailing storage, and initialize the data in the trailing storage as well.
+ void setExprs(MutableArrayRef<Expr *> NewStorage, ArrayRef<Expr *> Exprs) {
+ assert(NewStorage.size() == Exprs.size());
----------------
erichkeane wrote:
The reason it is `Storage` here, is because there isn't valid data in the `NewStorage` array, it is uninitialized data meant to represent the data 'location'. It isn't `Exprs` until after the `uninitialized_copy`.
https://github.com/llvm/llvm-project/pull/139749
More information about the cfe-commits
mailing list