Skip to content

Commit 96b0096

Browse files
committed
[Clang][P1061] Remove ResolvedUnexpandedPackExpr
1 parent a323e05 commit 96b0096

21 files changed

+3
-218
lines changed

clang/include/clang/AST/ExprCXX.h

Lines changed: 0 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -5318,59 +5318,6 @@ class BuiltinBitCastExpr final
53185318
}
53195319
};
53205320

5321-
// Represents an unexpanded pack where the list of expressions are
5322-
// known. These are used when structured bindings introduce a pack.
5323-
class ResolvedUnexpandedPackExpr final
5324-
: public Expr,
5325-
private llvm::TrailingObjects<ResolvedUnexpandedPackExpr, Expr *> {
5326-
friend class ASTStmtReader;
5327-
friend class ASTStmtWriter;
5328-
friend TrailingObjects;
5329-
5330-
SourceLocation BeginLoc;
5331-
unsigned NumExprs;
5332-
5333-
ResolvedUnexpandedPackExpr(SourceLocation BL, QualType QT, unsigned NumExprs);
5334-
5335-
public:
5336-
static ResolvedUnexpandedPackExpr *CreateDeserialized(ASTContext &C,
5337-
unsigned NumExprs);
5338-
static ResolvedUnexpandedPackExpr *
5339-
Create(ASTContext &C, SourceLocation BeginLoc, QualType T, unsigned NumExprs);
5340-
static ResolvedUnexpandedPackExpr *Create(ASTContext &C,
5341-
SourceLocation BeginLoc, QualType T,
5342-
llvm::ArrayRef<Expr *> Exprs);
5343-
5344-
unsigned getNumExprs() const { return NumExprs; }
5345-
5346-
llvm::MutableArrayRef<Expr *> getExprs() {
5347-
return {getTrailingObjects<Expr *>(), NumExprs};
5348-
}
5349-
5350-
llvm::ArrayRef<Expr *> getExprs() const {
5351-
return {getTrailingObjects<Expr *>(), NumExprs};
5352-
}
5353-
5354-
Expr *getExpansion(unsigned Idx) { return getExprs()[Idx]; }
5355-
Expr *getExpansion(unsigned Idx) const { return getExprs()[Idx]; }
5356-
5357-
// Iterators
5358-
child_range children() {
5359-
return child_range((Stmt **)getTrailingObjects<Expr *>(),
5360-
(Stmt **)getTrailingObjects<Expr *>() + getNumExprs());
5361-
}
5362-
5363-
SourceLocation getBeginLoc() const LLVM_READONLY { return BeginLoc; }
5364-
SourceLocation getEndLoc() const LLVM_READONLY { return BeginLoc; }
5365-
5366-
// Returns the resolved pack of a decl or nullptr
5367-
static ResolvedUnexpandedPackExpr *getFromDecl(Decl *);
5368-
5369-
static bool classof(const Stmt *T) {
5370-
return T->getStmtClass() == ResolvedUnexpandedPackExprClass;
5371-
}
5372-
};
5373-
53745321
} // namespace clang
53755322

53765323
#endif // LLVM_CLANG_AST_EXPRCXX_H

clang/include/clang/AST/RecursiveASTVisitor.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2950,7 +2950,6 @@ DEF_TRAVERSE_STMT(FunctionParmPackExpr, {})
29502950
DEF_TRAVERSE_STMT(CXXFoldExpr, {})
29512951
DEF_TRAVERSE_STMT(AtomicExpr, {})
29522952
DEF_TRAVERSE_STMT(CXXParenListInitExpr, {})
2953-
DEF_TRAVERSE_STMT(ResolvedUnexpandedPackExpr, {})
29542953

29552954
DEF_TRAVERSE_STMT(MaterializeTemporaryExpr, {
29562955
if (S->getLifetimeExtendedTemporaryDecl()) {

clang/include/clang/Basic/StmtNodes.td

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,6 @@ def MaterializeTemporaryExpr : StmtNode<Expr>;
163163
def LambdaExpr : StmtNode<Expr>;
164164
def CXXFoldExpr : StmtNode<Expr>;
165165
def CXXParenListInitExpr: StmtNode<Expr>;
166-
def ResolvedUnexpandedPackExpr : StmtNode<Expr>;
167166

168167
// C++ Coroutines expressions
169168
def CoroutineSuspendExpr : StmtNode<Expr, 1>;

clang/include/clang/Sema/Sema.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -232,8 +232,7 @@ void threadSafetyCleanup(BeforeSet *Cache);
232232

233233
// FIXME: No way to easily map from TemplateTypeParmTypes to
234234
// TemplateTypeParmDecls, so we have this horrible PointerUnion.
235-
typedef std::pair<llvm::PointerUnion<const TemplateTypeParmType *, NamedDecl *,
236-
ResolvedUnexpandedPackExpr *>,
235+
typedef std::pair<llvm::PointerUnion<const TemplateTypeParmType *, NamedDecl *>,
237236
SourceLocation>
238237
UnexpandedParameterPack;
239238

clang/include/clang/Serialization/ASTBitCodes.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1908,7 +1908,6 @@ enum StmtCode {
19081908
EXPR_PACK_EXPANSION, // PackExpansionExpr
19091909
EXPR_PACK_INDEXING, // PackIndexingExpr
19101910
EXPR_SIZEOF_PACK, // SizeOfPackExpr
1911-
EXPR_RESOLVED_UNEXPANDED_PACK, // ResolvedUnexpandedPackExpr
19121911
EXPR_SUBST_NON_TYPE_TEMPLATE_PARM, // SubstNonTypeTemplateParmExpr
19131912
EXPR_SUBST_NON_TYPE_TEMPLATE_PARM_PACK, // SubstNonTypeTemplateParmPackExpr
19141913
EXPR_FUNCTION_PARM_PACK, // FunctionParmPackExpr

clang/lib/AST/Expr.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3659,7 +3659,6 @@ bool Expr::HasSideEffects(const ASTContext &Ctx,
36593659
case PackIndexingExprClass:
36603660
case HLSLOutArgExprClass:
36613661
case OpenACCAsteriskSizeExprClass:
3662-
case ResolvedUnexpandedPackExprClass:
36633662
// These never have a side-effect.
36643663
return false;
36653664

clang/lib/AST/ExprCXX.cpp

Lines changed: 0 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -1965,52 +1965,3 @@ CXXFoldExpr::CXXFoldExpr(QualType T, UnresolvedLookupExpr *Callee,
19651965
SubExprs[SubExpr::RHS] = RHS;
19661966
setDependence(computeDependence(this));
19671967
}
1968-
1969-
ResolvedUnexpandedPackExpr::ResolvedUnexpandedPackExpr(SourceLocation BL,
1970-
QualType QT,
1971-
unsigned NumExprs)
1972-
: Expr(ResolvedUnexpandedPackExprClass, QT, VK_PRValue, OK_Ordinary),
1973-
BeginLoc(BL), NumExprs(NumExprs) {
1974-
// C++ [temp.dep.expr]p3
1975-
// An id-expression is type-dependent if it is
1976-
// - associated by name lookup with a pack
1977-
setDependence(ExprDependence::TypeValueInstantiation |
1978-
ExprDependence::UnexpandedPack);
1979-
}
1980-
1981-
ResolvedUnexpandedPackExpr *
1982-
ResolvedUnexpandedPackExpr::CreateDeserialized(ASTContext &Ctx,
1983-
unsigned NumExprs) {
1984-
void *Mem = Ctx.Allocate(totalSizeToAlloc<Expr *>(NumExprs),
1985-
alignof(ResolvedUnexpandedPackExpr));
1986-
return new (Mem)
1987-
ResolvedUnexpandedPackExpr(SourceLocation(), QualType(), NumExprs);
1988-
}
1989-
1990-
ResolvedUnexpandedPackExpr *
1991-
ResolvedUnexpandedPackExpr::Create(ASTContext &Ctx, SourceLocation BL,
1992-
QualType T, unsigned NumExprs) {
1993-
void *Mem = Ctx.Allocate(totalSizeToAlloc<Expr *>(NumExprs),
1994-
alignof(ResolvedUnexpandedPackExpr));
1995-
ResolvedUnexpandedPackExpr *New =
1996-
new (Mem) ResolvedUnexpandedPackExpr(BL, T, NumExprs);
1997-
1998-
auto Exprs = New->getExprs();
1999-
std::uninitialized_fill(Exprs.begin(), Exprs.end(), nullptr);
2000-
2001-
return New;
2002-
}
2003-
2004-
ResolvedUnexpandedPackExpr *
2005-
ResolvedUnexpandedPackExpr::Create(ASTContext &Ctx, SourceLocation BL,
2006-
QualType T, ArrayRef<Expr *> Exprs) {
2007-
auto *New = Create(Ctx, BL, T, Exprs.size());
2008-
std::uninitialized_copy(Exprs.begin(), Exprs.end(), New->getExprs().begin());
2009-
return New;
2010-
}
2011-
2012-
ResolvedUnexpandedPackExpr *ResolvedUnexpandedPackExpr::getFromDecl(Decl *D) {
2013-
if (auto *BD = dyn_cast<BindingDecl>(D))
2014-
return dyn_cast_if_present<ResolvedUnexpandedPackExpr>(BD->getBinding());
2015-
return nullptr;
2016-
}

clang/lib/AST/ExprClassification.cpp

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -451,13 +451,6 @@ static Cl::Kinds ClassifyInternal(ASTContext &Ctx, const Expr *E) {
451451
case Expr::PackExpansionExprClass:
452452
return ClassifyInternal(Ctx, cast<PackExpansionExpr>(E)->getPattern());
453453

454-
case Expr::ResolvedUnexpandedPackExprClass: {
455-
if (cast<ResolvedUnexpandedPackExpr>(E)->getNumExprs() > 0)
456-
return ClassifyInternal(
457-
Ctx, cast<ResolvedUnexpandedPackExpr>(E)->getExpansion(0));
458-
return Cl::CL_LValue;
459-
}
460-
461454
case Expr::MaterializeTemporaryExprClass:
462455
return cast<MaterializeTemporaryExpr>(E)->isBoundToLvalueReference()
463456
? Cl::CL_LValue

clang/lib/AST/ExprConstant.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17253,7 +17253,6 @@ static ICEDiag CheckICE(const Expr* E, const ASTContext &Ctx) {
1725317253
case Expr::SYCLUniqueStableNameExprClass:
1725417254
case Expr::CXXParenListInitExprClass:
1725517255
case Expr::HLSLOutArgExprClass:
17256-
case Expr::ResolvedUnexpandedPackExprClass:
1725717256
return ICEDiag(IK_NotICE, E->getBeginLoc());
1725817257

1725917258
case Expr::InitListExprClass: {

clang/lib/AST/ItaniumMangle.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4932,8 +4932,7 @@ void CXXNameMangler::mangleExpression(const Expr *E, unsigned Arity,
49324932
case Expr::AtomicExprClass:
49334933
case Expr::SourceLocExprClass:
49344934
case Expr::EmbedExprClass:
4935-
case Expr::BuiltinBitCastExprClass:
4936-
case Expr::ResolvedUnexpandedPackExprClass: {
4935+
case Expr::BuiltinBitCastExprClass: {
49374936
NotPrimaryExpr();
49384937
if (!NullOut) {
49394938
// As bad as this diagnostic is, it's better than crashing.

0 commit comments

Comments
 (0)