[clang] [NFC][Clang] Adopt simplified `getTrailingObjects` in Expr.cpp/h (PR #140102)
Erich Keane via cfe-commits
cfe-commits at lists.llvm.org
Fri May 16 06:50:49 PDT 2025
================
@@ -5043,16 +5037,18 @@ PseudoObjectExpr::PseudoObjectExpr(QualType type, ExprValueKind VK,
: Expr(PseudoObjectExprClass, type, VK, OK_Ordinary) {
PseudoObjectExprBits.NumSubExprs = semantics.size() + 1;
PseudoObjectExprBits.ResultIndex = resultIndex + 1;
-
- for (unsigned i = 0, e = semantics.size() + 1; i != e; ++i) {
- Expr *E = (i == 0 ? syntax : semantics[i-1]);
- getSubExprsBuffer()[i] = E;
-
- if (isa<OpaqueValueExpr>(E))
- assert(cast<OpaqueValueExpr>(E)->getSourceExpr() != nullptr &&
+ MutableArrayRef<Expr *> Trail = getTrailingObjects(semantics.size() + 1);
+ Trail[0] = syntax;
+ llvm::copy(semantics, Trail.drop_front().begin());
+
+#ifndef NDEBUG
+ llvm::for_each(semantics, [](const Expr *E) {
----------------
erichkeane wrote:
wonder if an:
`assert(llvm::all_of(semantics, [](const Expr *E) { return !isa<OpaqueValueExpr>(E) || cast<OpaqueValueExpr>(E)->getSourceExpr() != nullptr; }) && "string stuff");`
would read better/be less intrusive? WDYT?
https://github.com/llvm/llvm-project/pull/140102
More information about the cfe-commits
mailing list