diff --git a/clang/include/clang/AST/ExprCXX.h b/clang/include/clang/AST/ExprCXX.h index 4c9636f990db0..477373f07f25d 100644 --- a/clang/include/clang/AST/ExprCXX.h +++ b/clang/include/clang/AST/ExprCXX.h @@ -1290,7 +1290,7 @@ class CXXDefaultArgExpr final CXXDefaultArgExprBits.Loc = Loc; CXXDefaultArgExprBits.HasRewrittenInit = RewrittenExpr != nullptr; if (RewrittenExpr) - *getTrailingObjects() = RewrittenExpr; + *getTrailingObjects() = RewrittenExpr; setDependence(computeDependence(this)); } @@ -1323,7 +1323,7 @@ class CXXDefaultArgExpr final } Expr *getRewrittenExpr() { - return hasRewrittenInit() ? *getTrailingObjects() : nullptr; + return hasRewrittenInit() ? *getTrailingObjects() : nullptr; } const Expr *getRewrittenExpr() const { @@ -1421,14 +1421,14 @@ class CXXDefaultInitExpr final /// any. const Expr *getRewrittenExpr() const { assert(hasRewrittenInit() && "expected a rewritten init expression"); - return *getTrailingObjects(); + return *getTrailingObjects(); } /// Retrieve the initializing expression with evaluated immediate calls, if /// any. Expr *getRewrittenExpr() { assert(hasRewrittenInit() && "expected a rewritten init expression"); - return *getTrailingObjects(); + return *getTrailingObjects(); } const DeclContext *getUsedContext() const { return UsedContext; } @@ -1982,8 +1982,8 @@ class LambdaExpr final : public Expr, /// Construct an empty lambda expression. LambdaExpr(EmptyShell Empty, unsigned NumCaptures); - Stmt **getStoredStmts() { return getTrailingObjects(); } - Stmt *const *getStoredStmts() const { return getTrailingObjects(); } + Stmt **getStoredStmts() { return getTrailingObjects(); } + Stmt *const *getStoredStmts() const { return getTrailingObjects(); } void initBodyIfNeeded() const; @@ -3621,7 +3621,7 @@ class ExprWithCleanups final ArrayRef objects); ArrayRef getObjects() const { - return getTrailingObjects(getNumObjects()); + return getTrailingObjects(getNumObjects()); } unsigned getNumObjects() const { return ExprWithCleanupsBits.NumObjects; } @@ -3742,14 +3742,14 @@ class CXXUnresolvedConstructExpr final using arg_iterator = Expr **; using arg_range = llvm::iterator_range; - arg_iterator arg_begin() { return getTrailingObjects(); } + arg_iterator arg_begin() { return getTrailingObjects(); } arg_iterator arg_end() { return arg_begin() + getNumArgs(); } arg_range arguments() { return arg_range(arg_begin(), arg_end()); } using const_arg_iterator = const Expr* const *; using const_arg_range = llvm::iterator_range; - const_arg_iterator arg_begin() const { return getTrailingObjects(); } + const_arg_iterator arg_begin() const { return getTrailingObjects(); } const_arg_iterator arg_end() const { return arg_begin() + getNumArgs(); } const_arg_range arguments() const { return const_arg_range(arg_begin(), arg_end()); @@ -3860,10 +3860,6 @@ class CXXDependentScopeMemberExpr final return getNumTemplateArgs(); } - unsigned numTrailingObjects(OverloadToken) const { - return hasFirstQualifierFoundInScope(); - } - CXXDependentScopeMemberExpr(const ASTContext &Ctx, Expr *Base, QualType BaseType, bool IsArrow, SourceLocation OperatorLoc, @@ -4419,7 +4415,7 @@ class SizeOfPackExpr final Length(Length ? *Length : PartialArgs.size()), Pack(Pack) { assert((!Length || PartialArgs.empty()) && "have partial args for non-dependent sizeof... expression"); - auto *Args = getTrailingObjects(); + auto *Args = getTrailingObjects(); llvm::uninitialized_copy(PartialArgs, Args); setDependence(Length ? ExprDependence::None : ExprDependence::ValueInstantiation); @@ -4472,8 +4468,7 @@ class SizeOfPackExpr final /// Get ArrayRef getPartialArguments() const { assert(isPartiallySubstituted()); - const auto *Args = getTrailingObjects(); - return llvm::ArrayRef(Args, Args + Length); + return getTrailingObjects(Length); } SourceLocation getBeginLoc() const LLVM_READONLY { return OperatorLoc; } @@ -4517,8 +4512,7 @@ class PackIndexingExpr final SubExprs{PackIdExpr, IndexExpr} { PackIndexingExprBits.TransformedExpressions = SubstitutedExprs.size(); PackIndexingExprBits.FullySubstituted = FullySubstituted; - auto *Exprs = getTrailingObjects(); - llvm::uninitialized_copy(SubstitutedExprs, Exprs); + llvm::uninitialized_copy(SubstitutedExprs, getTrailingObjects()); setDependence(computeDependence(this)); if (!isInstantiationDependent()) @@ -4583,13 +4577,12 @@ class PackIndexingExpr final Expr *getSelectedExpr() const { UnsignedOrNone Index = getSelectedIndex(); assert(Index && "extracting the indexed expression of a dependant pack"); - return getTrailingObjects()[*Index]; + return getTrailingObjects()[*Index]; } /// Return the trailing expressions, regardless of the expansion. ArrayRef getExpressions() const { - return {getTrailingObjects(), - PackIndexingExprBits.TransformedExpressions}; + return getTrailingObjects(PackIndexingExprBits.TransformedExpressions); } static bool classof(const Stmt *T) { @@ -4817,7 +4810,7 @@ class FunctionParmPackExpr final /// Iterators over the parameters which the parameter pack expanded /// into. using iterator = ValueDecl *const *; - iterator begin() const { return getTrailingObjects(); } + iterator begin() const { return getTrailingObjects(); } iterator end() const { return begin() + NumParameters; } /// Get the number of parameters in this parameter pack. @@ -5099,7 +5092,7 @@ class CXXParenListInitExpr final : Expr(CXXParenListInitExprClass, T, getValueKindForType(T), OK_Ordinary), NumExprs(Args.size()), NumUserSpecifiedExprs(NumUserSpecifiedExprs), InitLoc(InitLoc), LParenLoc(LParenLoc), RParenLoc(RParenLoc) { - std::copy(Args.begin(), Args.end(), getTrailingObjects()); + llvm::copy(Args, getTrailingObjects()); assert(NumExprs >= NumUserSpecifiedExprs && "number of user specified inits is greater than the number of " "passed inits"); @@ -5124,19 +5117,17 @@ class CXXParenListInitExpr final void updateDependence() { setDependence(computeDependence(this)); } MutableArrayRef getInitExprs() { - return getTrailingObjects(NumExprs); + return getTrailingObjects(NumExprs); } - ArrayRef getInitExprs() const { - return getTrailingObjects(NumExprs); - } + ArrayRef getInitExprs() const { return getTrailingObjects(NumExprs); } ArrayRef getUserSpecifiedInitExprs() { - return getTrailingObjects(NumUserSpecifiedExprs); + return getTrailingObjects(NumUserSpecifiedExprs); } ArrayRef getUserSpecifiedInitExprs() const { - return getTrailingObjects(NumUserSpecifiedExprs); + return getTrailingObjects(NumUserSpecifiedExprs); } SourceLocation getBeginLoc() const LLVM_READONLY { return LParenLoc; } @@ -5172,13 +5163,12 @@ class CXXParenListInitExpr final } child_range children() { - Stmt **Begin = reinterpret_cast(getTrailingObjects()); + Stmt **Begin = reinterpret_cast(getTrailingObjects()); return child_range(Begin, Begin + NumExprs); } const_child_range children() const { - Stmt *const *Begin = - reinterpret_cast(getTrailingObjects()); + Stmt *const *Begin = reinterpret_cast(getTrailingObjects()); return const_child_range(Begin, Begin + NumExprs); } diff --git a/clang/lib/AST/ExprCXX.cpp b/clang/lib/AST/ExprCXX.cpp index bd43ed5ab2f9a..43b1c39d73798 100644 --- a/clang/lib/AST/ExprCXX.cpp +++ b/clang/lib/AST/ExprCXX.cpp @@ -1067,7 +1067,7 @@ CXXDefaultInitExpr::CXXDefaultInitExpr(const ASTContext &Ctx, CXXDefaultInitExprBits.HasRewrittenInit = RewrittenInitExpr != nullptr; if (CXXDefaultInitExprBits.HasRewrittenInit) - *getTrailingObjects() = RewrittenInitExpr; + *getTrailingObjects() = RewrittenInitExpr; assert(Field->hasInClassInitializer()); @@ -1437,8 +1437,7 @@ ExprWithCleanups::ExprWithCleanups(Expr *subexpr, : FullExpr(ExprWithCleanupsClass, subexpr) { ExprWithCleanupsBits.CleanupsHaveSideEffects = CleanupsHaveSideEffects; ExprWithCleanupsBits.NumObjects = objects.size(); - for (unsigned i = 0, e = objects.size(); i != e; ++i) - getTrailingObjects()[i] = objects[i]; + llvm::copy(objects, getTrailingObjects()); } ExprWithCleanups *ExprWithCleanups::Create(const ASTContext &C, Expr *subexpr, @@ -1474,7 +1473,7 @@ CXXUnresolvedConstructExpr::CXXUnresolvedConstructExpr( TypeAndInitForm(TSI, IsListInit), LParenLoc(LParenLoc), RParenLoc(RParenLoc) { CXXUnresolvedConstructExprBits.NumArgs = Args.size(); - auto **StoredArgs = getTrailingObjects(); + auto **StoredArgs = getTrailingObjects(); for (unsigned I = 0; I != Args.size(); ++I) StoredArgs[I] = Args[I]; setDependence(computeDependence(this)); @@ -1800,8 +1799,7 @@ FunctionParmPackExpr::FunctionParmPackExpr(QualType T, ValueDecl *ParamPack, : Expr(FunctionParmPackExprClass, T, VK_LValue, OK_Ordinary), ParamPack(ParamPack), NameLoc(NameLoc), NumParameters(NumParams) { if (Params) - std::uninitialized_copy(Params, Params + NumParams, - getTrailingObjects()); + std::uninitialized_copy(Params, Params + NumParams, getTrailingObjects()); setDependence(ExprDependence::TypeValueInstantiation | ExprDependence::UnexpandedPack); }