@@ -368,10 +368,9 @@ class alignas(8) Expr : public ASTAllocated<Expr> {
368368 IsObjC : 1
369369 );
370370
371- SWIFT_INLINE_BITFIELD_FULL (SequenceExpr, Expr, 32 + 1 ,
371+ SWIFT_INLINE_BITFIELD_FULL (SequenceExpr, Expr, 32 ,
372372 : NumPadBits,
373- NumElements : 32 ,
374- IsFolded: 1
373+ NumElements : 32
375374 );
376375
377376 SWIFT_INLINE_BITFIELD (OpaqueValueExpr, Expr, 1 ,
@@ -3970,6 +3969,9 @@ class SequenceExpr final : public Expr,
39703969 private llvm::TrailingObjects<SequenceExpr, Expr *> {
39713970 friend TrailingObjects;
39723971
3972+ // / The cached folded expression.
3973+ Expr *FoldedExpr = nullptr ;
3974+
39733975 SequenceExpr (ArrayRef<Expr*> elements)
39743976 : Expr(ExprKind::Sequence, /* Implicit=*/ false ) {
39753977 Bits.SequenceExpr .NumElements = elements.size ();
@@ -4005,11 +4007,14 @@ class SequenceExpr final : public Expr,
40054007 getElements ()[i] = e;
40064008 }
40074009
4008- bool isFolded () const {
4009- return static_cast <bool >(Bits.SequenceExpr .IsFolded );
4010+ // / Retrieve the folded expression, or \c nullptr if the SequencExpr has
4011+ // / not yet been folded.
4012+ Expr *getFoldedExpr () const {
4013+ return FoldedExpr;
40104014 }
4011- void setFolded (bool folded) {
4012- Bits.SequenceExpr .IsFolded = static_cast <unsigned >(folded);
4015+
4016+ void setFoldedExpr (Expr *foldedExpr) {
4017+ FoldedExpr = foldedExpr;
40134018 }
40144019
40154020 // Implement isa/cast/dyncast/etc.
0 commit comments