diff options
author | Dimitry Andric <dim@FreeBSD.org> | 2021-02-16 20:13:02 +0000 |
---|---|---|
committer | Dimitry Andric <dim@FreeBSD.org> | 2021-02-16 20:13:02 +0000 |
commit | b60736ec1405bb0a8dd40989f67ef4c93da068ab (patch) | |
tree | 5c43fbb7c9fc45f0f87e0e6795a86267dbd12f9d /clang/lib/Serialization/ASTWriterStmt.cpp | |
parent | cfca06d7963fa0909f90483b42a6d7d194d01e08 (diff) | |
download | src-b60736ec1405bb0a8dd40989f67ef4c93da068ab.tar.gz src-b60736ec1405bb0a8dd40989f67ef4c93da068ab.zip |
Vendor import of llvm-project main 8e464dd76bef, the last commit beforevendor/llvm-project/llvmorg-12-init-17869-g8e464dd76bef
the upstream release/12.x branch was created.
Diffstat (limited to 'clang/lib/Serialization/ASTWriterStmt.cpp')
-rw-r--r-- | clang/lib/Serialization/ASTWriterStmt.cpp | 158 |
1 files changed, 36 insertions, 122 deletions
diff --git a/clang/lib/Serialization/ASTWriterStmt.cpp b/clang/lib/Serialization/ASTWriterStmt.cpp index 0767b3a24bf2..d4f669ea0183 100644 --- a/clang/lib/Serialization/ASTWriterStmt.cpp +++ b/clang/lib/Serialization/ASTWriterStmt.cpp @@ -152,6 +152,8 @@ void ASTStmtWriter::VisitIfStmt(IfStmt *S) { Record.AddStmt(S->getInit()); Record.AddSourceLocation(S->getIfLoc()); + Record.AddSourceLocation(S->getLParenLoc()); + Record.AddSourceLocation(S->getRParenLoc()); if (HasElse) Record.AddSourceLocation(S->getElseLoc()); @@ -175,6 +177,8 @@ void ASTStmtWriter::VisitSwitchStmt(SwitchStmt *S) { Record.AddDeclRef(S->getConditionVariable()); Record.AddSourceLocation(S->getSwitchLoc()); + Record.AddSourceLocation(S->getLParenLoc()); + Record.AddSourceLocation(S->getRParenLoc()); for (SwitchCase *SC = S->getSwitchCaseList(); SC; SC = SC->getNextSwitchCase()) @@ -848,12 +852,15 @@ void ASTStmtWriter::VisitOMPIteratorExpr(OMPIteratorExpr *E) { void ASTStmtWriter::VisitCallExpr(CallExpr *E) { VisitExpr(E); Record.push_back(E->getNumArgs()); + Record.push_back(E->hasStoredFPFeatures()); Record.AddSourceLocation(E->getRParenLoc()); Record.AddStmt(E->getCallee()); for (CallExpr::arg_iterator Arg = E->arg_begin(), ArgEnd = E->arg_end(); Arg != ArgEnd; ++Arg) Record.AddStmt(*Arg); Record.push_back(static_cast<unsigned>(E->getADLCallKind())); + if (E->hasStoredFPFeatures()) + Record.push_back(E->getFPFeatures().getAsOpaqueInt()); Code = serialization::EXPR_CALL; } @@ -939,12 +946,16 @@ void ASTStmtWriter::VisitObjCBridgedCastExpr(ObjCBridgedCastExpr *E) { void ASTStmtWriter::VisitCastExpr(CastExpr *E) { VisitExpr(E); Record.push_back(E->path_size()); + Record.push_back(E->hasStoredFPFeatures()); Record.AddStmt(E->getSubExpr()); Record.push_back(E->getCastKind()); // FIXME: stable encoding for (CastExpr::path_iterator PI = E->path_begin(), PE = E->path_end(); PI != PE; ++PI) Record.AddCXXBaseSpecifier(**PI); + + if (E->hasStoredFPFeatures()) + Record.push_back(E->getFPFeatures().getAsOpaqueInt()); } void ASTStmtWriter::VisitBinaryOperator(BinaryOperator *E) { @@ -996,7 +1007,7 @@ void ASTStmtWriter::VisitImplicitCastExpr(ImplicitCastExpr *E) { VisitCastExpr(E); Record.push_back(E->isPartOfExplicitCast()); - if (E->path_size() == 0) + if (E->path_size() == 0 && !E->hasStoredFPFeatures()) AbbrevToUse = Writer.getExprImplicitCastAbbrev(); Code = serialization::EXPR_IMPLICIT_CAST; @@ -1550,7 +1561,6 @@ void ASTStmtWriter::VisitCXXOperatorCallExpr(CXXOperatorCallExpr *E) { VisitCallExpr(E); Record.push_back(E->getOperator()); Record.AddSourceRange(E->Range); - Record.push_back(E->getFPFeatures().getAsOpaqueInt()); Code = serialization::EXPR_CXX_OPERATOR_CALL; } @@ -1890,7 +1900,7 @@ ASTStmtWriter::VisitDependentScopeDeclRefExpr(DependentScopeDeclRefExpr *E) { void ASTStmtWriter::VisitCXXUnresolvedConstructExpr(CXXUnresolvedConstructExpr *E) { VisitExpr(E); - Record.push_back(E->arg_size()); + Record.push_back(E->getNumArgs()); for (CXXUnresolvedConstructExpr::arg_iterator ArgI = E->arg_begin(), ArgE = E->arg_end(); ArgI != ArgE; ++ArgI) Record.AddStmt(*ArgI); @@ -2008,6 +2018,7 @@ void ASTStmtWriter::VisitSubstNonTypeTemplateParmExpr( SubstNonTypeTemplateParmExpr *E) { VisitExpr(E); Record.AddDeclRef(E->getParameter()); + Record.push_back(E->isReferenceParameter()); Record.AddSourceLocation(E->getNameLoc()); Record.AddStmt(E->getReplacement()); Code = serialization::EXPR_SUBST_NON_TYPE_TEMPLATE_PARM; @@ -2051,6 +2062,7 @@ void ASTStmtWriter::VisitCXXFoldExpr(CXXFoldExpr *E) { Record.push_back(E->NumExpansions); Record.AddStmt(E->SubExprs[0]); Record.AddStmt(E->SubExprs[1]); + Record.AddStmt(E->SubExprs[2]); Record.push_back(E->Opcode); Code = serialization::EXPR_CXX_FOLD; } @@ -2157,85 +2169,23 @@ void ASTStmtWriter::VisitSEHLeaveStmt(SEHLeaveStmt *S) { //===----------------------------------------------------------------------===// // OpenMP Directives. //===----------------------------------------------------------------------===// + void ASTStmtWriter::VisitOMPExecutableDirective(OMPExecutableDirective *E) { + Record.writeOMPChildren(E->Data); Record.AddSourceLocation(E->getBeginLoc()); Record.AddSourceLocation(E->getEndLoc()); - for (unsigned i = 0; i < E->getNumClauses(); ++i) { - Record.writeOMPClause(E->getClause(i)); - } - if (E->hasAssociatedStmt()) - Record.AddStmt(E->getAssociatedStmt()); } void ASTStmtWriter::VisitOMPLoopDirective(OMPLoopDirective *D) { VisitStmt(D); - Record.push_back(D->getNumClauses()); - Record.push_back(D->getCollapsedNumber()); + Record.writeUInt32(D->getCollapsedNumber()); VisitOMPExecutableDirective(D); - Record.AddStmt(D->getIterationVariable()); - Record.AddStmt(D->getLastIteration()); - Record.AddStmt(D->getCalcLastIteration()); - Record.AddStmt(D->getPreCond()); - Record.AddStmt(D->getCond()); - Record.AddStmt(D->getInit()); - Record.AddStmt(D->getInc()); - Record.AddStmt(D->getPreInits()); - if (isOpenMPWorksharingDirective(D->getDirectiveKind()) || - isOpenMPTaskLoopDirective(D->getDirectiveKind()) || - isOpenMPDistributeDirective(D->getDirectiveKind())) { - Record.AddStmt(D->getIsLastIterVariable()); - Record.AddStmt(D->getLowerBoundVariable()); - Record.AddStmt(D->getUpperBoundVariable()); - Record.AddStmt(D->getStrideVariable()); - Record.AddStmt(D->getEnsureUpperBound()); - Record.AddStmt(D->getNextLowerBound()); - Record.AddStmt(D->getNextUpperBound()); - Record.AddStmt(D->getNumIterations()); - } - if (isOpenMPLoopBoundSharingDirective(D->getDirectiveKind())) { - Record.AddStmt(D->getPrevLowerBoundVariable()); - Record.AddStmt(D->getPrevUpperBoundVariable()); - Record.AddStmt(D->getDistInc()); - Record.AddStmt(D->getPrevEnsureUpperBound()); - Record.AddStmt(D->getCombinedLowerBoundVariable()); - Record.AddStmt(D->getCombinedUpperBoundVariable()); - Record.AddStmt(D->getCombinedEnsureUpperBound()); - Record.AddStmt(D->getCombinedInit()); - Record.AddStmt(D->getCombinedCond()); - Record.AddStmt(D->getCombinedNextLowerBound()); - Record.AddStmt(D->getCombinedNextUpperBound()); - Record.AddStmt(D->getCombinedDistCond()); - Record.AddStmt(D->getCombinedParForInDistCond()); - } - for (auto I : D->counters()) { - Record.AddStmt(I); - } - for (auto I : D->private_counters()) { - Record.AddStmt(I); - } - for (auto I : D->inits()) { - Record.AddStmt(I); - } - for (auto I : D->updates()) { - Record.AddStmt(I); - } - for (auto I : D->finals()) { - Record.AddStmt(I); - } - for (Stmt *S : D->dependent_counters()) - Record.AddStmt(S); - for (Stmt *S : D->dependent_inits()) - Record.AddStmt(S); - for (Stmt *S : D->finals_conditions()) - Record.AddStmt(S); } void ASTStmtWriter::VisitOMPParallelDirective(OMPParallelDirective *D) { VisitStmt(D); - Record.push_back(D->getNumClauses()); VisitOMPExecutableDirective(D); - Record.AddStmt(D->getTaskReductionRefExpr()); - Record.push_back(D->hasCancel() ? 1 : 0); + Record.writeBool(D->hasCancel()); Code = serialization::STMT_OMP_PARALLEL_DIRECTIVE; } @@ -2246,8 +2196,7 @@ void ASTStmtWriter::VisitOMPSimdDirective(OMPSimdDirective *D) { void ASTStmtWriter::VisitOMPForDirective(OMPForDirective *D) { VisitOMPLoopDirective(D); - Record.AddStmt(D->getTaskReductionRefExpr()); - Record.push_back(D->hasCancel() ? 1 : 0); + Record.writeBool(D->hasCancel()); Code = serialization::STMT_OMP_FOR_DIRECTIVE; } @@ -2258,23 +2207,20 @@ void ASTStmtWriter::VisitOMPForSimdDirective(OMPForSimdDirective *D) { void ASTStmtWriter::VisitOMPSectionsDirective(OMPSectionsDirective *D) { VisitStmt(D); - Record.push_back(D->getNumClauses()); VisitOMPExecutableDirective(D); - Record.AddStmt(D->getTaskReductionRefExpr()); - Record.push_back(D->hasCancel() ? 1 : 0); + Record.writeBool(D->hasCancel()); Code = serialization::STMT_OMP_SECTIONS_DIRECTIVE; } void ASTStmtWriter::VisitOMPSectionDirective(OMPSectionDirective *D) { VisitStmt(D); VisitOMPExecutableDirective(D); - Record.push_back(D->hasCancel() ? 1 : 0); + Record.writeBool(D->hasCancel()); Code = serialization::STMT_OMP_SECTION_DIRECTIVE; } void ASTStmtWriter::VisitOMPSingleDirective(OMPSingleDirective *D) { VisitStmt(D); - Record.push_back(D->getNumClauses()); VisitOMPExecutableDirective(D); Code = serialization::STMT_OMP_SINGLE_DIRECTIVE; } @@ -2287,7 +2233,6 @@ void ASTStmtWriter::VisitOMPMasterDirective(OMPMasterDirective *D) { void ASTStmtWriter::VisitOMPCriticalDirective(OMPCriticalDirective *D) { VisitStmt(D); - Record.push_back(D->getNumClauses()); VisitOMPExecutableDirective(D); Record.AddDeclarationNameInfo(D->getDirectiveName()); Code = serialization::STMT_OMP_CRITICAL_DIRECTIVE; @@ -2295,8 +2240,7 @@ void ASTStmtWriter::VisitOMPCriticalDirective(OMPCriticalDirective *D) { void ASTStmtWriter::VisitOMPParallelForDirective(OMPParallelForDirective *D) { VisitOMPLoopDirective(D); - Record.AddStmt(D->getTaskReductionRefExpr()); - Record.push_back(D->hasCancel() ? 1 : 0); + Record.writeBool(D->hasCancel()); Code = serialization::STMT_OMP_PARALLEL_FOR_DIRECTIVE; } @@ -2309,53 +2253,41 @@ void ASTStmtWriter::VisitOMPParallelForSimdDirective( void ASTStmtWriter::VisitOMPParallelMasterDirective( OMPParallelMasterDirective *D) { VisitStmt(D); - Record.push_back(D->getNumClauses()); VisitOMPExecutableDirective(D); - Record.AddStmt(D->getTaskReductionRefExpr()); Code = serialization::STMT_OMP_PARALLEL_MASTER_DIRECTIVE; } void ASTStmtWriter::VisitOMPParallelSectionsDirective( OMPParallelSectionsDirective *D) { VisitStmt(D); - Record.push_back(D->getNumClauses()); VisitOMPExecutableDirective(D); - Record.AddStmt(D->getTaskReductionRefExpr()); - Record.push_back(D->hasCancel() ? 1 : 0); + Record.writeBool(D->hasCancel()); Code = serialization::STMT_OMP_PARALLEL_SECTIONS_DIRECTIVE; } void ASTStmtWriter::VisitOMPTaskDirective(OMPTaskDirective *D) { VisitStmt(D); - Record.push_back(D->getNumClauses()); VisitOMPExecutableDirective(D); - Record.push_back(D->hasCancel() ? 1 : 0); + Record.writeBool(D->hasCancel()); Code = serialization::STMT_OMP_TASK_DIRECTIVE; } void ASTStmtWriter::VisitOMPAtomicDirective(OMPAtomicDirective *D) { VisitStmt(D); - Record.push_back(D->getNumClauses()); VisitOMPExecutableDirective(D); - Record.AddStmt(D->getX()); - Record.AddStmt(D->getV()); - Record.AddStmt(D->getExpr()); - Record.AddStmt(D->getUpdateExpr()); - Record.push_back(D->isXLHSInRHSPart() ? 1 : 0); - Record.push_back(D->isPostfixUpdate() ? 1 : 0); + Record.writeBool(D->isXLHSInRHSPart()); + Record.writeBool(D->isPostfixUpdate()); Code = serialization::STMT_OMP_ATOMIC_DIRECTIVE; } void ASTStmtWriter::VisitOMPTargetDirective(OMPTargetDirective *D) { VisitStmt(D); - Record.push_back(D->getNumClauses()); VisitOMPExecutableDirective(D); Code = serialization::STMT_OMP_TARGET_DIRECTIVE; } void ASTStmtWriter::VisitOMPTargetDataDirective(OMPTargetDataDirective *D) { VisitStmt(D); - Record.push_back(D->getNumClauses()); VisitOMPExecutableDirective(D); Code = serialization::STMT_OMP_TARGET_DATA_DIRECTIVE; } @@ -2363,7 +2295,6 @@ void ASTStmtWriter::VisitOMPTargetDataDirective(OMPTargetDataDirective *D) { void ASTStmtWriter::VisitOMPTargetEnterDataDirective( OMPTargetEnterDataDirective *D) { VisitStmt(D); - Record.push_back(D->getNumClauses()); VisitOMPExecutableDirective(D); Code = serialization::STMT_OMP_TARGET_ENTER_DATA_DIRECTIVE; } @@ -2371,7 +2302,6 @@ void ASTStmtWriter::VisitOMPTargetEnterDataDirective( void ASTStmtWriter::VisitOMPTargetExitDataDirective( OMPTargetExitDataDirective *D) { VisitStmt(D); - Record.push_back(D->getNumClauses()); VisitOMPExecutableDirective(D); Code = serialization::STMT_OMP_TARGET_EXIT_DATA_DIRECTIVE; } @@ -2379,9 +2309,7 @@ void ASTStmtWriter::VisitOMPTargetExitDataDirective( void ASTStmtWriter::VisitOMPTargetParallelDirective( OMPTargetParallelDirective *D) { VisitStmt(D); - Record.push_back(D->getNumClauses()); VisitOMPExecutableDirective(D); - Record.AddStmt(D->getTaskReductionRefExpr()); Record.writeBool(D->hasCancel()); Code = serialization::STMT_OMP_TARGET_PARALLEL_DIRECTIVE; } @@ -2389,8 +2317,7 @@ void ASTStmtWriter::VisitOMPTargetParallelDirective( void ASTStmtWriter::VisitOMPTargetParallelForDirective( OMPTargetParallelForDirective *D) { VisitOMPLoopDirective(D); - Record.AddStmt(D->getTaskReductionRefExpr()); - Record.push_back(D->hasCancel() ? 1 : 0); + Record.writeBool(D->hasCancel()); Code = serialization::STMT_OMP_TARGET_PARALLEL_FOR_DIRECTIVE; } @@ -2414,43 +2341,36 @@ void ASTStmtWriter::VisitOMPTaskwaitDirective(OMPTaskwaitDirective *D) { void ASTStmtWriter::VisitOMPTaskgroupDirective(OMPTaskgroupDirective *D) { VisitStmt(D); - Record.push_back(D->getNumClauses()); VisitOMPExecutableDirective(D); - Record.AddStmt(D->getReductionRef()); Code = serialization::STMT_OMP_TASKGROUP_DIRECTIVE; } void ASTStmtWriter::VisitOMPFlushDirective(OMPFlushDirective *D) { VisitStmt(D); - Record.push_back(D->getNumClauses()); VisitOMPExecutableDirective(D); Code = serialization::STMT_OMP_FLUSH_DIRECTIVE; } void ASTStmtWriter::VisitOMPDepobjDirective(OMPDepobjDirective *D) { VisitStmt(D); - Record.push_back(D->getNumClauses()); VisitOMPExecutableDirective(D); Code = serialization::STMT_OMP_DEPOBJ_DIRECTIVE; } void ASTStmtWriter::VisitOMPScanDirective(OMPScanDirective *D) { VisitStmt(D); - Record.push_back(D->getNumClauses()); VisitOMPExecutableDirective(D); Code = serialization::STMT_OMP_SCAN_DIRECTIVE; } void ASTStmtWriter::VisitOMPOrderedDirective(OMPOrderedDirective *D) { VisitStmt(D); - Record.push_back(D->getNumClauses()); VisitOMPExecutableDirective(D); Code = serialization::STMT_OMP_ORDERED_DIRECTIVE; } void ASTStmtWriter::VisitOMPTeamsDirective(OMPTeamsDirective *D) { VisitStmt(D); - Record.push_back(D->getNumClauses()); VisitOMPExecutableDirective(D); Code = serialization::STMT_OMP_TEAMS_DIRECTIVE; } @@ -2459,21 +2379,20 @@ void ASTStmtWriter::VisitOMPCancellationPointDirective( OMPCancellationPointDirective *D) { VisitStmt(D); VisitOMPExecutableDirective(D); - Record.push_back(uint64_t(D->getCancelRegion())); + Record.writeEnum(D->getCancelRegion()); Code = serialization::STMT_OMP_CANCELLATION_POINT_DIRECTIVE; } void ASTStmtWriter::VisitOMPCancelDirective(OMPCancelDirective *D) { VisitStmt(D); - Record.push_back(D->getNumClauses()); VisitOMPExecutableDirective(D); - Record.push_back(uint64_t(D->getCancelRegion())); + Record.writeEnum(D->getCancelRegion()); Code = serialization::STMT_OMP_CANCEL_DIRECTIVE; } void ASTStmtWriter::VisitOMPTaskLoopDirective(OMPTaskLoopDirective *D) { VisitOMPLoopDirective(D); - Record.push_back(D->hasCancel() ? 1 : 0); + Record.writeBool(D->hasCancel()); Code = serialization::STMT_OMP_TASKLOOP_DIRECTIVE; } @@ -2485,7 +2404,7 @@ void ASTStmtWriter::VisitOMPTaskLoopSimdDirective(OMPTaskLoopSimdDirective *D) { void ASTStmtWriter::VisitOMPMasterTaskLoopDirective( OMPMasterTaskLoopDirective *D) { VisitOMPLoopDirective(D); - Record.push_back(D->hasCancel() ? 1 : 0); + Record.writeBool(D->hasCancel()); Code = serialization::STMT_OMP_MASTER_TASKLOOP_DIRECTIVE; } @@ -2498,7 +2417,7 @@ void ASTStmtWriter::VisitOMPMasterTaskLoopSimdDirective( void ASTStmtWriter::VisitOMPParallelMasterTaskLoopDirective( OMPParallelMasterTaskLoopDirective *D) { VisitOMPLoopDirective(D); - Record.push_back(D->hasCancel() ? 1 : 0); + Record.writeBool(D->hasCancel()); Code = serialization::STMT_OMP_PARALLEL_MASTER_TASKLOOP_DIRECTIVE; } @@ -2515,7 +2434,6 @@ void ASTStmtWriter::VisitOMPDistributeDirective(OMPDistributeDirective *D) { void ASTStmtWriter::VisitOMPTargetUpdateDirective(OMPTargetUpdateDirective *D) { VisitStmt(D); - Record.push_back(D->getNumClauses()); VisitOMPExecutableDirective(D); Code = serialization::STMT_OMP_TARGET_UPDATE_DIRECTIVE; } @@ -2523,8 +2441,7 @@ void ASTStmtWriter::VisitOMPTargetUpdateDirective(OMPTargetUpdateDirective *D) { void ASTStmtWriter::VisitOMPDistributeParallelForDirective( OMPDistributeParallelForDirective *D) { VisitOMPLoopDirective(D); - Record.AddStmt(D->getTaskReductionRefExpr()); - Record.push_back(D->hasCancel() ? 1 : 0); + Record.writeBool(D->hasCancel()); Code = serialization::STMT_OMP_DISTRIBUTE_PARALLEL_FOR_DIRECTIVE; } @@ -2572,14 +2489,12 @@ void ASTStmtWriter::VisitOMPTeamsDistributeParallelForSimdDirective( void ASTStmtWriter::VisitOMPTeamsDistributeParallelForDirective( OMPTeamsDistributeParallelForDirective *D) { VisitOMPLoopDirective(D); - Record.AddStmt(D->getTaskReductionRefExpr()); - Record.push_back(D->hasCancel() ? 1 : 0); + Record.writeBool(D->hasCancel()); Code = serialization::STMT_OMP_TEAMS_DISTRIBUTE_PARALLEL_FOR_DIRECTIVE; } void ASTStmtWriter::VisitOMPTargetTeamsDirective(OMPTargetTeamsDirective *D) { VisitStmt(D); - Record.push_back(D->getNumClauses()); VisitOMPExecutableDirective(D); Code = serialization::STMT_OMP_TARGET_TEAMS_DIRECTIVE; } @@ -2593,8 +2508,7 @@ void ASTStmtWriter::VisitOMPTargetTeamsDistributeDirective( void ASTStmtWriter::VisitOMPTargetTeamsDistributeParallelForDirective( OMPTargetTeamsDistributeParallelForDirective *D) { VisitOMPLoopDirective(D); - Record.AddStmt(D->getTaskReductionRefExpr()); - Record.push_back(D->hasCancel() ? 1 : 0); + Record.writeBool(D->hasCancel()); Code = serialization::STMT_OMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_FOR_DIRECTIVE; } |