Index: clang/include/clang/AST/Expr.h =================================================================== --- clang/include/clang/AST/Expr.h +++ clang/include/clang/AST/Expr.h @@ -4597,43 +4597,6 @@ } }; -class VAArgPackExpr : public Expr { - SourceLocation BuiltinLoc; - SourceLocation RParenLoc; -public: - VAArgPackExpr(SourceLocation BLoc, SourceLocation RPLoc, QualType t) : - Expr(VAArgPackExprClass, t, VK_RValue, OK_Ordinary), - BuiltinLoc(BLoc), RParenLoc(RPLoc) { - setDependence(ExprDependence::None); - } - explicit VAArgPackExpr(EmptyShell Empty) - : Expr(VAArgPackExprClass, Empty) {} - - SourceLocation getBuiltinLoc() const { return BuiltinLoc; } - void setBuiltinLoc(SourceLocation L) { BuiltinLoc = L; } - - SourceLocation getRParenLoc() const { return RParenLoc; } - void setRParenLoc(SourceLocation L) { RParenLoc = L; } - - SourceLocation getBeginLoc() const LLVM_READONLY { return BuiltinLoc; } - SourceLocation getEndLoc() const LLVM_READONLY { return RParenLoc; } - - static bool classof(const Stmt *T) { - return T->getStmtClass() == VAArgPackExprClass; - } - - SourceLocation getLocation() const { return BuiltinLoc; } - - child_range children() { - return child_range(child_iterator(), child_iterator()); - } - - const_child_range children() const { - return const_child_range(child_iterator(), child_iterator()); - } - -}; - /// Represents a function call to one of __builtin_LINE(), __builtin_COLUMN(), /// __builtin_FUNCTION(), or __builtin_FILE(). class SourceLocExpr final : public Expr { Index: clang/include/clang/AST/RecursiveASTVisitor.h =================================================================== --- clang/include/clang/AST/RecursiveASTVisitor.h +++ clang/include/clang/AST/RecursiveASTVisitor.h @@ -2482,8 +2482,6 @@ TRY_TO(TraverseTypeLoc(S->getWrittenTypeInfo()->getTypeLoc())); }) -DEF_TRAVERSE_STMT(VAArgPackExpr, {}) - DEF_TRAVERSE_STMT(CXXTemporaryObjectExpr, { // This is called for code like 'return T()' where T is a class type. TRY_TO(TraverseTypeLoc(S->getTypeSourceInfo()->getTypeLoc())); Index: clang/include/clang/Basic/StmtNodes.td =================================================================== --- clang/include/clang/Basic/StmtNodes.td +++ clang/include/clang/Basic/StmtNodes.td @@ -95,7 +95,6 @@ def ArrayInitIndexExpr : StmtNode; def ParenListExpr : StmtNode; def VAArgExpr : StmtNode; -def VAArgPackExpr : StmtNode; def GenericSelectionExpr : StmtNode; def PseudoObjectExpr : StmtNode; def SourceLocExpr : StmtNode; Index: clang/include/clang/Basic/TokenKinds.def =================================================================== --- clang/include/clang/Basic/TokenKinds.def +++ clang/include/clang/Basic/TokenKinds.def @@ -434,7 +434,6 @@ // type trait. TYPE_TRAIT_2(__builtin_types_compatible_p, TypeCompatible, KEYNOCXX) KEYWORD(__builtin_va_arg , KEYALL) -KEYWORD(__builtin_va_arg_pack , KEYALL) KEYWORD(__extension__ , KEYALL) KEYWORD(__float128 , KEYALL) KEYWORD(__imag , KEYALL) Index: clang/include/clang/Sema/Sema.h =================================================================== --- clang/include/clang/Sema/Sema.h +++ clang/include/clang/Sema/Sema.h @@ -5474,9 +5474,6 @@ ExprResult BuildVAArgExpr(SourceLocation BuiltinLoc, Expr *E, TypeSourceInfo *TInfo, SourceLocation RPLoc); - ExprResult ActOnVAArgPack(SourceLocation BuiltinLoc, SourceLocation RPLoc); - ExprResult BuildVAArgPackExpr(SourceLocation BuiltinLoc, SourceLocation RPLoc); - // __builtin_LINE(), __builtin_FUNCTION(), __builtin_FILE(), // __builtin_COLUMN() ExprResult ActOnSourceLocExpr(SourceLocExpr::IdentKind Kind, Index: clang/include/clang/Serialization/ASTBitCodes.h =================================================================== --- clang/include/clang/Serialization/ASTBitCodes.h +++ clang/include/clang/Serialization/ASTBitCodes.h @@ -1669,8 +1669,6 @@ /// A VAArgExpr record. EXPR_VA_ARG, - EXPR_VA_ARG_PACK, - /// An AddrLabelExpr record. EXPR_ADDR_LABEL, Index: clang/lib/AST/Expr.cpp =================================================================== --- clang/lib/AST/Expr.cpp +++ clang/lib/AST/Expr.cpp @@ -2412,9 +2412,6 @@ case AtomicExprClass: return false; - case VAArgPackExprClass: - return true; - case ConditionalOperatorClass: { // If only one of the LHS or RHS is a warning, the operator might // be being used for control flow. Only warn if both the LHS and @@ -3345,9 +3342,6 @@ // These always have a side-effect. return true; - case VAArgPackExprClass: - return false; - case StmtExprClass: { // StmtExprs have a side-effect if any substatement does. SideEffectFinder Finder(Ctx, IncludePossibleEffects); Index: clang/lib/AST/ExprClassification.cpp =================================================================== --- clang/lib/AST/ExprClassification.cpp +++ clang/lib/AST/ExprClassification.cpp @@ -401,9 +401,6 @@ case Expr::VAArgExprClass: return ClassifyUnnamed(Ctx, E->getType()); - case Expr::VAArgPackExprClass: - return ClassifyUnnamed(Ctx, E->getType()); - case Expr::DesignatedInitExprClass: return ClassifyInternal(Ctx, cast(E)->getInit()); Index: clang/lib/AST/ExprConstant.cpp =================================================================== --- clang/lib/AST/ExprConstant.cpp +++ clang/lib/AST/ExprConstant.cpp @@ -15079,7 +15079,6 @@ case Expr::ImplicitValueInitExprClass: case Expr::ParenListExprClass: case Expr::VAArgExprClass: - case Expr::VAArgPackExprClass: case Expr::AddrLabelExprClass: case Expr::StmtExprClass: case Expr::CXXMemberCallExprClass: Index: clang/lib/AST/ItaniumMangle.cpp =================================================================== --- clang/lib/AST/ItaniumMangle.cpp +++ clang/lib/AST/ItaniumMangle.cpp @@ -3983,7 +3983,6 @@ case Expr::ArrayTypeTraitExprClass: case Expr::ExpressionTraitExprClass: case Expr::VAArgExprClass: - case Expr::VAArgPackExprClass: case Expr::CUDAKernelCallExprClass: case Expr::AsTypeExprClass: case Expr::PseudoObjectExprClass: Index: clang/lib/AST/StmtPrinter.cpp =================================================================== --- clang/lib/AST/StmtPrinter.cpp +++ clang/lib/AST/StmtPrinter.cpp @@ -1652,10 +1652,6 @@ OS << ")"; } -void StmtPrinter::VisitVAArgPackExpr(VAArgPackExpr *Node) { - OS << "__builtin_va_arg_pack()"; -} - void StmtPrinter::VisitPseudoObjectExpr(PseudoObjectExpr *Node) { PrintExpr(Node->getSyntacticForm()); } Index: clang/lib/AST/StmtProfile.cpp =================================================================== --- clang/lib/AST/StmtProfile.cpp +++ clang/lib/AST/StmtProfile.cpp @@ -1324,10 +1324,6 @@ VisitExpr(S); } -void StmtProfiler::VisitVAArgPackExpr(const VAArgPackExpr *S) { - VisitExpr(S); -} - void StmtProfiler::VisitInitListExpr(const InitListExpr *S) { if (S->getSyntacticForm()) { VisitInitListExpr(S->getSyntacticForm()); Index: clang/lib/CodeGen/CGExpr.cpp =================================================================== --- clang/lib/CodeGen/CGExpr.cpp +++ clang/lib/CodeGen/CGExpr.cpp @@ -40,7 +40,6 @@ #include "llvm/Transforms/Utils/SanitizerStats.h" #include -#include using namespace clang; using namespace CodeGen; @@ -1314,9 +1313,6 @@ return EmitLValue(cast(E)->getSemanticForm()); case Expr::VAArgExprClass: return EmitVAArgExprLValue(cast(E)); - case Expr::VAArgPackExprClass: - std::cout << __FUNCTION__ << std::endl; - return EmitVAArgPackExprLValue(cast(E)); case Expr::DeclRefExprClass: return EmitDeclRefLValue(cast(E)); case Expr::ConstantExprClass: { @@ -4998,10 +4994,6 @@ return MakeNaturalAlignPointeeAddrLValue(RV.getScalarVal(), E->getType()); } -LValue CodeGenFunction::EmitVAArgPackExprLValue(const VAArgPackExpr *E) { - return EmitAggExprToLValue(E); -} - LValue CodeGenFunction::EmitVAArgExprLValue(const VAArgExpr *E) { // FIXME: This shouldn't require another copy. return EmitAggExprToLValue(E); Index: clang/lib/CodeGen/CGExprAgg.cpp =================================================================== --- clang/lib/CodeGen/CGExprAgg.cpp +++ clang/lib/CodeGen/CGExprAgg.cpp @@ -203,7 +203,6 @@ } void VisitVAArgExpr(VAArgExpr *E); - void VisitVAArgPackExpr(VAArgPackExpr *E); void EmitInitializationToLValue(Expr *E, LValue Address); void EmitNullInitializationToLValue(LValue Address); @@ -1289,26 +1288,6 @@ EmitFinalDestCopy(VE->getType(), CGF.MakeAddrLValue(ArgPtr, VE->getType())); } - -#include -void AggExprEmitter::VisitVAArgPackExpr(VAArgPackExpr *E) { - std::cout << "EMITTING VA ARG PACK EXPR" << std::endl; - //Address ArgValue = Address::invalid(); - //Address ArgPtr = CGF.EmitVAArg(VE, ArgValue); - - //CGF.EmitVAArg( - - // If EmitVAArg fails, emit an error. - //if (!ArgPtr.isValid()) { - //CGF.ErrorUnsupported(VE, "aggregate va_arg expression"); - //return; - //} - - //EmitFinalDestCopy(VE->getType(), CGF.MakeAddrLValue(ArgPtr, VE->getType())); - -} - - void AggExprEmitter::VisitCXXBindTemporaryExpr(CXXBindTemporaryExpr *E) { // Ensure that we have a slot, but if we already do, remember // whether it was externally destructed. Index: clang/lib/CodeGen/CodeGenFunction.h =================================================================== --- clang/lib/CodeGen/CodeGenFunction.h +++ clang/lib/CodeGen/CodeGenFunction.h @@ -3772,7 +3772,6 @@ LValue EmitCallExprLValue(const CallExpr *E); // Note: only available for agg return types LValue EmitVAArgExprLValue(const VAArgExpr *E); - LValue EmitVAArgPackExprLValue(const VAArgPackExpr *E); LValue EmitDeclRefLValue(const DeclRefExpr *E); LValue EmitStringLiteralLValue(const StringLiteral *E); LValue EmitObjCEncodeExprLValue(const ObjCEncodeExpr *E); Index: clang/lib/Parse/ParseExpr.cpp =================================================================== --- clang/lib/Parse/ParseExpr.cpp +++ clang/lib/Parse/ParseExpr.cpp @@ -30,7 +30,6 @@ #include "clang/Sema/Scope.h" #include "clang/Sema/TypoCorrection.h" #include "llvm/ADT/SmallVector.h" -#include using namespace clang; /// Simple precedence-based parser for binary/ternary operators. @@ -1296,7 +1295,6 @@ Res = ParseAvailabilityCheckExpr(Tok.getLocation()); break; case tok::kw___builtin_va_arg: - case tok::kw___builtin_va_arg_pack: case tok::kw___builtin_offsetof: case tok::kw___builtin_choose_expr: case tok::kw___builtin_astype: // primary-expression: [OCL] as_type() @@ -2669,18 +2667,6 @@ ConsumeParen()); break; } - case tok::kw___builtin_va_arg_pack: { - std::cout << "OMG BUILTIN VA ARG PACK" << std::endl; - if (Tok.isNot(tok::r_paren)) { - Diag(Tok, diag::err_expected) << tok::r_paren; - SkipUntil(tok::r_paren, StopAtSemi); - } - - // Parse - - Res = Actions.ActOnVAArgPack(StartLoc, ConsumeParen()); - break; - } case tok::kw___builtin_COLUMN: case tok::kw___builtin_FILE: case tok::kw___builtin_FUNCTION: Index: clang/lib/Sema/SemaExceptionSpec.cpp =================================================================== --- clang/lib/Sema/SemaExceptionSpec.cpp +++ clang/lib/Sema/SemaExceptionSpec.cpp @@ -1282,7 +1282,6 @@ case Expr::StmtExprClass: case Expr::ConvertVectorExprClass: case Expr::VAArgExprClass: - case Expr::VAArgPackExprClass: return canSubStmtsThrow(*this, S); case Expr::CompoundLiteralExprClass: Index: clang/lib/Sema/SemaExpr.cpp =================================================================== --- clang/lib/Sema/SemaExpr.cpp +++ clang/lib/Sema/SemaExpr.cpp @@ -15621,17 +15621,6 @@ return new (Context) VAArgExpr(BuiltinLoc, E, TInfo, RPLoc, T, IsMS); } -ExprResult Sema::ActOnVAArgPack(SourceLocation BuiltinLoc, SourceLocation RPLoc) { - return BuildVAArgPackExpr(BuiltinLoc, RPLoc); -} - -ExprResult Sema::BuildVAArgPackExpr(SourceLocation BuiltinLoc, SourceLocation RPLoc) { - QualType VaListType = Context.getBuiltinVaListType(); - llvm::errs() << __FUNCTION__ << "\n"; - //return ExprError(); - return new (Context) VAArgPackExpr(BuiltinLoc, RPLoc, VaListType); -} - ExprResult Sema::ActOnGNUNullExpr(SourceLocation TokenLoc) { // The type of __null will be int or long, depending on the size of // pointers on the target. Index: clang/lib/Sema/TreeTransform.h =================================================================== --- clang/lib/Sema/TreeTransform.h +++ clang/lib/Sema/TreeTransform.h @@ -3248,11 +3248,6 @@ return getSema().BuildSourceLocExpr(Kind, BuiltinLoc, RPLoc, ParentContext); } - ExprResult RebuildVAArgPackExpr(SourceLocation BuiltinLoc, - SourceLocation RPLoc) { - return getSema().BuildVAArgPackExpr (BuiltinLoc, RPLoc); - } - /// Build a new Objective-C boxed expression. /// /// By default, performs semantic analysis to build the new expression. @@ -11184,14 +11179,6 @@ getSema().CurContext); } -template -ExprResult TreeTransform::TransformVAArgPackExpr(VAArgPackExpr *E) { - if (!getDerived().AlwaysRebuild()) - return E; - - return getDerived().RebuildVAArgPackExpr(E->getBeginLoc(), E->getEndLoc()); -} - template ExprResult TreeTransform::TransformCUDAKernelCallExpr(CUDAKernelCallExpr *E) { Index: clang/lib/Serialization/ASTReaderStmt.cpp =================================================================== --- clang/lib/Serialization/ASTReaderStmt.cpp +++ clang/lib/Serialization/ASTReaderStmt.cpp @@ -1284,12 +1284,6 @@ E->setIsMicrosoftABI(Record.readInt()); } -void ASTStmtReader::VisitVAArgPackExpr(VAArgPackExpr *E) { - VisitExpr(E); - E->setBuiltinLoc(readSourceLocation()); - E->setRParenLoc(readSourceLocation()); -} - void ASTStmtReader::VisitSourceLocExpr(SourceLocExpr *E) { VisitExpr(E); E->ParentContext = readDeclAs(); @@ -2960,10 +2954,6 @@ S = new (Context) VAArgExpr(Empty); break; - case EXPR_VA_ARG_PACK: - S = new (Context) VAArgPackExpr(Empty); - break; - case EXPR_SOURCE_LOC: S = new (Context) SourceLocExpr(Empty); break; Index: clang/lib/Serialization/ASTWriterStmt.cpp =================================================================== --- clang/lib/Serialization/ASTWriterStmt.cpp +++ clang/lib/Serialization/ASTWriterStmt.cpp @@ -1144,13 +1144,6 @@ Code = serialization::EXPR_VA_ARG; } -void ASTStmtWriter::VisitVAArgPackExpr(VAArgPackExpr *E) { - VisitExpr(E); - Record.AddSourceLocation(E->getBuiltinLoc()); - Record.AddSourceLocation(E->getRParenLoc()); - Code = serialization::EXPR_VA_ARG_PACK; -} - void ASTStmtWriter::VisitSourceLocExpr(SourceLocExpr *E) { VisitExpr(E); Record.AddDeclRef(cast_or_null(E->getParentContext())); Index: clang/lib/StaticAnalyzer/Core/ExprEngine.cpp =================================================================== --- clang/lib/StaticAnalyzer/Core/ExprEngine.cpp +++ clang/lib/StaticAnalyzer/Core/ExprEngine.cpp @@ -1382,7 +1382,6 @@ case Stmt::ShuffleVectorExprClass: case Stmt::ConvertVectorExprClass: case Stmt::VAArgExprClass: - case Stmt::VAArgPackExprClass: case Stmt::CUDAKernelCallExprClass: case Stmt::OpaqueValueExprClass: case Stmt::AsTypeExprClass: Index: clang/tools/libclang/CXCursor.cpp =================================================================== --- clang/tools/libclang/CXCursor.cpp +++ clang/tools/libclang/CXCursor.cpp @@ -331,7 +331,6 @@ case Stmt::SourceLocExprClass: case Stmt::ConvertVectorExprClass: case Stmt::VAArgExprClass: - case Stmt::VAArgPackExprClass: case Stmt::ObjCArrayLiteralClass: case Stmt::ObjCDictionaryLiteralClass: case Stmt::ObjCBoxedExprClass: