#include "clang/AST/ASTContext.h"
#include "clang/AST/DeclCXX.h"
#include "clang/AST/DeclObjC.h"
#include "clang/AST/DeclTemplate.h"
#include "clang/AST/Expr.h"
#include "clang/AST/ExprCXX.h"
#include "clang/AST/ExprObjC.h"
#include "clang/AST/ExprOpenMP.h"
#include "clang/AST/ODRHash.h"
#include "clang/AST/OpenMPClause.h"
#include "clang/AST/StmtVisitor.h"
#include "llvm/ADT/FoldingSet.h"
usingnamespaceclang;
namespace {
class StmtProfiler : public ConstStmtVisitor<StmtProfiler> { … };
class StmtProfilerWithPointers : public StmtProfiler { … };
class StmtProfilerWithoutPointers : public StmtProfiler { … };
}
void StmtProfiler::VisitStmt(const Stmt *S) { … }
void StmtProfiler::VisitDeclStmt(const DeclStmt *S) { … }
void StmtProfiler::VisitNullStmt(const NullStmt *S) { … }
void StmtProfiler::VisitCompoundStmt(const CompoundStmt *S) { … }
void StmtProfiler::VisitCaseStmt(const CaseStmt *S) { … }
void StmtProfiler::VisitDefaultStmt(const DefaultStmt *S) { … }
void StmtProfiler::VisitLabelStmt(const LabelStmt *S) { … }
void StmtProfiler::VisitAttributedStmt(const AttributedStmt *S) { … }
void StmtProfiler::VisitIfStmt(const IfStmt *S) { … }
void StmtProfiler::VisitSwitchStmt(const SwitchStmt *S) { … }
void StmtProfiler::VisitWhileStmt(const WhileStmt *S) { … }
void StmtProfiler::VisitDoStmt(const DoStmt *S) { … }
void StmtProfiler::VisitForStmt(const ForStmt *S) { … }
void StmtProfiler::VisitGotoStmt(const GotoStmt *S) { … }
void StmtProfiler::VisitIndirectGotoStmt(const IndirectGotoStmt *S) { … }
void StmtProfiler::VisitContinueStmt(const ContinueStmt *S) { … }
void StmtProfiler::VisitBreakStmt(const BreakStmt *S) { … }
void StmtProfiler::VisitReturnStmt(const ReturnStmt *S) { … }
void StmtProfiler::VisitGCCAsmStmt(const GCCAsmStmt *S) { … }
void StmtProfiler::VisitMSAsmStmt(const MSAsmStmt *S) { … }
void StmtProfiler::VisitCXXCatchStmt(const CXXCatchStmt *S) { … }
void StmtProfiler::VisitCXXTryStmt(const CXXTryStmt *S) { … }
void StmtProfiler::VisitCXXForRangeStmt(const CXXForRangeStmt *S) { … }
void StmtProfiler::VisitMSDependentExistsStmt(const MSDependentExistsStmt *S) { … }
void StmtProfiler::VisitSEHTryStmt(const SEHTryStmt *S) { … }
void StmtProfiler::VisitSEHFinallyStmt(const SEHFinallyStmt *S) { … }
void StmtProfiler::VisitSEHExceptStmt(const SEHExceptStmt *S) { … }
void StmtProfiler::VisitSEHLeaveStmt(const SEHLeaveStmt *S) { … }
void StmtProfiler::VisitCapturedStmt(const CapturedStmt *S) { … }
void StmtProfiler::VisitObjCForCollectionStmt(const ObjCForCollectionStmt *S) { … }
void StmtProfiler::VisitObjCAtCatchStmt(const ObjCAtCatchStmt *S) { … }
void StmtProfiler::VisitObjCAtFinallyStmt(const ObjCAtFinallyStmt *S) { … }
void StmtProfiler::VisitObjCAtTryStmt(const ObjCAtTryStmt *S) { … }
void
StmtProfiler::VisitObjCAtSynchronizedStmt(const ObjCAtSynchronizedStmt *S) { … }
void StmtProfiler::VisitObjCAtThrowStmt(const ObjCAtThrowStmt *S) { … }
void
StmtProfiler::VisitObjCAutoreleasePoolStmt(const ObjCAutoreleasePoolStmt *S) { … }
namespace {
class OMPClauseProfiler : public ConstOMPClauseVisitor<OMPClauseProfiler> { … };
void OMPClauseProfiler::VistOMPClauseWithPreInit(
const OMPClauseWithPreInit *C) { … }
void OMPClauseProfiler::VistOMPClauseWithPostUpdate(
const OMPClauseWithPostUpdate *C) { … }
void OMPClauseProfiler::VisitOMPIfClause(const OMPIfClause *C) { … }
void OMPClauseProfiler::VisitOMPFinalClause(const OMPFinalClause *C) { … }
void OMPClauseProfiler::VisitOMPNumThreadsClause(const OMPNumThreadsClause *C) { … }
void OMPClauseProfiler::VisitOMPAlignClause(const OMPAlignClause *C) { … }
void OMPClauseProfiler::VisitOMPSafelenClause(const OMPSafelenClause *C) { … }
void OMPClauseProfiler::VisitOMPSimdlenClause(const OMPSimdlenClause *C) { … }
void OMPClauseProfiler::VisitOMPSizesClause(const OMPSizesClause *C) { … }
void OMPClauseProfiler::VisitOMPFullClause(const OMPFullClause *C) { … }
void OMPClauseProfiler::VisitOMPPartialClause(const OMPPartialClause *C) { … }
void OMPClauseProfiler::VisitOMPAllocatorClause(const OMPAllocatorClause *C) { … }
void OMPClauseProfiler::VisitOMPCollapseClause(const OMPCollapseClause *C) { … }
void OMPClauseProfiler::VisitOMPDetachClause(const OMPDetachClause *C) { … }
void OMPClauseProfiler::VisitOMPNovariantsClause(const OMPNovariantsClause *C) { … }
void OMPClauseProfiler::VisitOMPNocontextClause(const OMPNocontextClause *C) { … }
void OMPClauseProfiler::VisitOMPDefaultClause(const OMPDefaultClause *C) { … }
void OMPClauseProfiler::VisitOMPProcBindClause(const OMPProcBindClause *C) { … }
void OMPClauseProfiler::VisitOMPUnifiedAddressClause(
const OMPUnifiedAddressClause *C) { … }
void OMPClauseProfiler::VisitOMPUnifiedSharedMemoryClause(
const OMPUnifiedSharedMemoryClause *C) { … }
void OMPClauseProfiler::VisitOMPReverseOffloadClause(
const OMPReverseOffloadClause *C) { … }
void OMPClauseProfiler::VisitOMPDynamicAllocatorsClause(
const OMPDynamicAllocatorsClause *C) { … }
void OMPClauseProfiler::VisitOMPAtomicDefaultMemOrderClause(
const OMPAtomicDefaultMemOrderClause *C) { … }
void OMPClauseProfiler::VisitOMPAtClause(const OMPAtClause *C) { … }
void OMPClauseProfiler::VisitOMPSeverityClause(const OMPSeverityClause *C) { … }
void OMPClauseProfiler::VisitOMPMessageClause(const OMPMessageClause *C) { … }
void OMPClauseProfiler::VisitOMPScheduleClause(const OMPScheduleClause *C) { … }
void OMPClauseProfiler::VisitOMPOrderedClause(const OMPOrderedClause *C) { … }
void OMPClauseProfiler::VisitOMPNowaitClause(const OMPNowaitClause *) { … }
void OMPClauseProfiler::VisitOMPUntiedClause(const OMPUntiedClause *) { … }
void OMPClauseProfiler::VisitOMPMergeableClause(const OMPMergeableClause *) { … }
void OMPClauseProfiler::VisitOMPReadClause(const OMPReadClause *) { … }
void OMPClauseProfiler::VisitOMPWriteClause(const OMPWriteClause *) { … }
void OMPClauseProfiler::VisitOMPUpdateClause(const OMPUpdateClause *) { … }
void OMPClauseProfiler::VisitOMPCaptureClause(const OMPCaptureClause *) { … }
void OMPClauseProfiler::VisitOMPCompareClause(const OMPCompareClause *) { … }
void OMPClauseProfiler::VisitOMPFailClause(const OMPFailClause *) { … }
void OMPClauseProfiler::VisitOMPAbsentClause(const OMPAbsentClause *) { … }
void OMPClauseProfiler::VisitOMPHoldsClause(const OMPHoldsClause *) { … }
void OMPClauseProfiler::VisitOMPContainsClause(const OMPContainsClause *) { … }
void OMPClauseProfiler::VisitOMPNoOpenMPClause(const OMPNoOpenMPClause *) { … }
void OMPClauseProfiler::VisitOMPNoOpenMPRoutinesClause(
const OMPNoOpenMPRoutinesClause *) { … }
void OMPClauseProfiler::VisitOMPNoParallelismClause(
const OMPNoParallelismClause *) { … }
void OMPClauseProfiler::VisitOMPSeqCstClause(const OMPSeqCstClause *) { … }
void OMPClauseProfiler::VisitOMPAcqRelClause(const OMPAcqRelClause *) { … }
void OMPClauseProfiler::VisitOMPAcquireClause(const OMPAcquireClause *) { … }
void OMPClauseProfiler::VisitOMPReleaseClause(const OMPReleaseClause *) { … }
void OMPClauseProfiler::VisitOMPRelaxedClause(const OMPRelaxedClause *) { … }
void OMPClauseProfiler::VisitOMPWeakClause(const OMPWeakClause *) { … }
void OMPClauseProfiler::VisitOMPThreadsClause(const OMPThreadsClause *) { … }
void OMPClauseProfiler::VisitOMPSIMDClause(const OMPSIMDClause *) { … }
void OMPClauseProfiler::VisitOMPNogroupClause(const OMPNogroupClause *) { … }
void OMPClauseProfiler::VisitOMPInitClause(const OMPInitClause *C) { … }
void OMPClauseProfiler::VisitOMPUseClause(const OMPUseClause *C) { … }
void OMPClauseProfiler::VisitOMPDestroyClause(const OMPDestroyClause *C) { … }
void OMPClauseProfiler::VisitOMPFilterClause(const OMPFilterClause *C) { … }
template<typename T>
void OMPClauseProfiler::VisitOMPClauseList(T *Node) { … }
void OMPClauseProfiler::VisitOMPPrivateClause(const OMPPrivateClause *C) { … }
void
OMPClauseProfiler::VisitOMPFirstprivateClause(const OMPFirstprivateClause *C) { … }
void
OMPClauseProfiler::VisitOMPLastprivateClause(const OMPLastprivateClause *C) { … }
void OMPClauseProfiler::VisitOMPSharedClause(const OMPSharedClause *C) { … }
void OMPClauseProfiler::VisitOMPReductionClause(
const OMPReductionClause *C) { … }
void OMPClauseProfiler::VisitOMPTaskReductionClause(
const OMPTaskReductionClause *C) { … }
void OMPClauseProfiler::VisitOMPInReductionClause(
const OMPInReductionClause *C) { … }
void OMPClauseProfiler::VisitOMPLinearClause(const OMPLinearClause *C) { … }
void OMPClauseProfiler::VisitOMPAlignedClause(const OMPAlignedClause *C) { … }
void OMPClauseProfiler::VisitOMPCopyinClause(const OMPCopyinClause *C) { … }
void
OMPClauseProfiler::VisitOMPCopyprivateClause(const OMPCopyprivateClause *C) { … }
void OMPClauseProfiler::VisitOMPFlushClause(const OMPFlushClause *C) { … }
void OMPClauseProfiler::VisitOMPDepobjClause(const OMPDepobjClause *C) { … }
void OMPClauseProfiler::VisitOMPDependClause(const OMPDependClause *C) { … }
void OMPClauseProfiler::VisitOMPDeviceClause(const OMPDeviceClause *C) { … }
void OMPClauseProfiler::VisitOMPMapClause(const OMPMapClause *C) { … }
void OMPClauseProfiler::VisitOMPAllocateClause(const OMPAllocateClause *C) { … }
void OMPClauseProfiler::VisitOMPNumTeamsClause(const OMPNumTeamsClause *C) { … }
void OMPClauseProfiler::VisitOMPThreadLimitClause(
const OMPThreadLimitClause *C) { … }
void OMPClauseProfiler::VisitOMPPriorityClause(const OMPPriorityClause *C) { … }
void OMPClauseProfiler::VisitOMPGrainsizeClause(const OMPGrainsizeClause *C) { … }
void OMPClauseProfiler::VisitOMPNumTasksClause(const OMPNumTasksClause *C) { … }
void OMPClauseProfiler::VisitOMPHintClause(const OMPHintClause *C) { … }
void OMPClauseProfiler::VisitOMPToClause(const OMPToClause *C) { … }
void OMPClauseProfiler::VisitOMPFromClause(const OMPFromClause *C) { … }
void OMPClauseProfiler::VisitOMPUseDevicePtrClause(
const OMPUseDevicePtrClause *C) { … }
void OMPClauseProfiler::VisitOMPUseDeviceAddrClause(
const OMPUseDeviceAddrClause *C) { … }
void OMPClauseProfiler::VisitOMPIsDevicePtrClause(
const OMPIsDevicePtrClause *C) { … }
void OMPClauseProfiler::VisitOMPHasDeviceAddrClause(
const OMPHasDeviceAddrClause *C) { … }
void OMPClauseProfiler::VisitOMPNontemporalClause(
const OMPNontemporalClause *C) { … }
void OMPClauseProfiler::VisitOMPInclusiveClause(const OMPInclusiveClause *C) { … }
void OMPClauseProfiler::VisitOMPExclusiveClause(const OMPExclusiveClause *C) { … }
void OMPClauseProfiler::VisitOMPUsesAllocatorsClause(
const OMPUsesAllocatorsClause *C) { … }
void OMPClauseProfiler::VisitOMPAffinityClause(const OMPAffinityClause *C) { … }
void OMPClauseProfiler::VisitOMPOrderClause(const OMPOrderClause *C) { … }
void OMPClauseProfiler::VisitOMPBindClause(const OMPBindClause *C) { … }
void OMPClauseProfiler::VisitOMPXDynCGroupMemClause(
const OMPXDynCGroupMemClause *C) { … }
void OMPClauseProfiler::VisitOMPDoacrossClause(const OMPDoacrossClause *C) { … }
void OMPClauseProfiler::VisitOMPXAttributeClause(const OMPXAttributeClause *C) { … }
void OMPClauseProfiler::VisitOMPXBareClause(const OMPXBareClause *C) { … }
}
void
StmtProfiler::VisitOMPExecutableDirective(const OMPExecutableDirective *S) { … }
void StmtProfiler::VisitOMPCanonicalLoop(const OMPCanonicalLoop *L) { … }
void StmtProfiler::VisitOMPLoopBasedDirective(const OMPLoopBasedDirective *S) { … }
void StmtProfiler::VisitOMPLoopDirective(const OMPLoopDirective *S) { … }
void StmtProfiler::VisitOMPMetaDirective(const OMPMetaDirective *S) { … }
void StmtProfiler::VisitOMPParallelDirective(const OMPParallelDirective *S) { … }
void StmtProfiler::VisitOMPSimdDirective(const OMPSimdDirective *S) { … }
void StmtProfiler::VisitOMPLoopTransformationDirective(
const OMPLoopTransformationDirective *S) { … }
void StmtProfiler::VisitOMPTileDirective(const OMPTileDirective *S) { … }
void StmtProfiler::VisitOMPUnrollDirective(const OMPUnrollDirective *S) { … }
void StmtProfiler::VisitOMPReverseDirective(const OMPReverseDirective *S) { … }
void StmtProfiler::VisitOMPInterchangeDirective(
const OMPInterchangeDirective *S) { … }
void StmtProfiler::VisitOMPForDirective(const OMPForDirective *S) { … }
void StmtProfiler::VisitOMPForSimdDirective(const OMPForSimdDirective *S) { … }
void StmtProfiler::VisitOMPSectionsDirective(const OMPSectionsDirective *S) { … }
void StmtProfiler::VisitOMPSectionDirective(const OMPSectionDirective *S) { … }
void StmtProfiler::VisitOMPScopeDirective(const OMPScopeDirective *S) { … }
void StmtProfiler::VisitOMPSingleDirective(const OMPSingleDirective *S) { … }
void StmtProfiler::VisitOMPMasterDirective(const OMPMasterDirective *S) { … }
void StmtProfiler::VisitOMPCriticalDirective(const OMPCriticalDirective *S) { … }
void
StmtProfiler::VisitOMPParallelForDirective(const OMPParallelForDirective *S) { … }
void StmtProfiler::VisitOMPParallelForSimdDirective(
const OMPParallelForSimdDirective *S) { … }
void StmtProfiler::VisitOMPParallelMasterDirective(
const OMPParallelMasterDirective *S) { … }
void StmtProfiler::VisitOMPParallelMaskedDirective(
const OMPParallelMaskedDirective *S) { … }
void StmtProfiler::VisitOMPParallelSectionsDirective(
const OMPParallelSectionsDirective *S) { … }
void StmtProfiler::VisitOMPTaskDirective(const OMPTaskDirective *S) { … }
void StmtProfiler::VisitOMPTaskyieldDirective(const OMPTaskyieldDirective *S) { … }
void StmtProfiler::VisitOMPBarrierDirective(const OMPBarrierDirective *S) { … }
void StmtProfiler::VisitOMPTaskwaitDirective(const OMPTaskwaitDirective *S) { … }
void StmtProfiler::VisitOMPAssumeDirective(const OMPAssumeDirective *S) { … }
void StmtProfiler::VisitOMPErrorDirective(const OMPErrorDirective *S) { … }
void StmtProfiler::VisitOMPTaskgroupDirective(const OMPTaskgroupDirective *S) { … }
void StmtProfiler::VisitOMPFlushDirective(const OMPFlushDirective *S) { … }
void StmtProfiler::VisitOMPDepobjDirective(const OMPDepobjDirective *S) { … }
void StmtProfiler::VisitOMPScanDirective(const OMPScanDirective *S) { … }
void StmtProfiler::VisitOMPOrderedDirective(const OMPOrderedDirective *S) { … }
void StmtProfiler::VisitOMPAtomicDirective(const OMPAtomicDirective *S) { … }
void StmtProfiler::VisitOMPTargetDirective(const OMPTargetDirective *S) { … }
void StmtProfiler::VisitOMPTargetDataDirective(const OMPTargetDataDirective *S) { … }
void StmtProfiler::VisitOMPTargetEnterDataDirective(
const OMPTargetEnterDataDirective *S) { … }
void StmtProfiler::VisitOMPTargetExitDataDirective(
const OMPTargetExitDataDirective *S) { … }
void StmtProfiler::VisitOMPTargetParallelDirective(
const OMPTargetParallelDirective *S) { … }
void StmtProfiler::VisitOMPTargetParallelForDirective(
const OMPTargetParallelForDirective *S) { … }
void StmtProfiler::VisitOMPTeamsDirective(const OMPTeamsDirective *S) { … }
void StmtProfiler::VisitOMPCancellationPointDirective(
const OMPCancellationPointDirective *S) { … }
void StmtProfiler::VisitOMPCancelDirective(const OMPCancelDirective *S) { … }
void StmtProfiler::VisitOMPTaskLoopDirective(const OMPTaskLoopDirective *S) { … }
void StmtProfiler::VisitOMPTaskLoopSimdDirective(
const OMPTaskLoopSimdDirective *S) { … }
void StmtProfiler::VisitOMPMasterTaskLoopDirective(
const OMPMasterTaskLoopDirective *S) { … }
void StmtProfiler::VisitOMPMaskedTaskLoopDirective(
const OMPMaskedTaskLoopDirective *S) { … }
void StmtProfiler::VisitOMPMasterTaskLoopSimdDirective(
const OMPMasterTaskLoopSimdDirective *S) { … }
void StmtProfiler::VisitOMPMaskedTaskLoopSimdDirective(
const OMPMaskedTaskLoopSimdDirective *S) { … }
void StmtProfiler::VisitOMPParallelMasterTaskLoopDirective(
const OMPParallelMasterTaskLoopDirective *S) { … }
void StmtProfiler::VisitOMPParallelMaskedTaskLoopDirective(
const OMPParallelMaskedTaskLoopDirective *S) { … }
void StmtProfiler::VisitOMPParallelMasterTaskLoopSimdDirective(
const OMPParallelMasterTaskLoopSimdDirective *S) { … }
void StmtProfiler::VisitOMPParallelMaskedTaskLoopSimdDirective(
const OMPParallelMaskedTaskLoopSimdDirective *S) { … }
void StmtProfiler::VisitOMPDistributeDirective(
const OMPDistributeDirective *S) { … }
void OMPClauseProfiler::VisitOMPDistScheduleClause(
const OMPDistScheduleClause *C) { … }
void OMPClauseProfiler::VisitOMPDefaultmapClause(const OMPDefaultmapClause *) { … }
void StmtProfiler::VisitOMPTargetUpdateDirective(
const OMPTargetUpdateDirective *S) { … }
void StmtProfiler::VisitOMPDistributeParallelForDirective(
const OMPDistributeParallelForDirective *S) { … }
void StmtProfiler::VisitOMPDistributeParallelForSimdDirective(
const OMPDistributeParallelForSimdDirective *S) { … }
void StmtProfiler::VisitOMPDistributeSimdDirective(
const OMPDistributeSimdDirective *S) { … }
void StmtProfiler::VisitOMPTargetParallelForSimdDirective(
const OMPTargetParallelForSimdDirective *S) { … }
void StmtProfiler::VisitOMPTargetSimdDirective(
const OMPTargetSimdDirective *S) { … }
void StmtProfiler::VisitOMPTeamsDistributeDirective(
const OMPTeamsDistributeDirective *S) { … }
void StmtProfiler::VisitOMPTeamsDistributeSimdDirective(
const OMPTeamsDistributeSimdDirective *S) { … }
void StmtProfiler::VisitOMPTeamsDistributeParallelForSimdDirective(
const OMPTeamsDistributeParallelForSimdDirective *S) { … }
void StmtProfiler::VisitOMPTeamsDistributeParallelForDirective(
const OMPTeamsDistributeParallelForDirective *S) { … }
void StmtProfiler::VisitOMPTargetTeamsDirective(
const OMPTargetTeamsDirective *S) { … }
void StmtProfiler::VisitOMPTargetTeamsDistributeDirective(
const OMPTargetTeamsDistributeDirective *S) { … }
void StmtProfiler::VisitOMPTargetTeamsDistributeParallelForDirective(
const OMPTargetTeamsDistributeParallelForDirective *S) { … }
void StmtProfiler::VisitOMPTargetTeamsDistributeParallelForSimdDirective(
const OMPTargetTeamsDistributeParallelForSimdDirective *S) { … }
void StmtProfiler::VisitOMPTargetTeamsDistributeSimdDirective(
const OMPTargetTeamsDistributeSimdDirective *S) { … }
void StmtProfiler::VisitOMPInteropDirective(const OMPInteropDirective *S) { … }
void StmtProfiler::VisitOMPDispatchDirective(const OMPDispatchDirective *S) { … }
void StmtProfiler::VisitOMPMaskedDirective(const OMPMaskedDirective *S) { … }
void StmtProfiler::VisitOMPGenericLoopDirective(
const OMPGenericLoopDirective *S) { … }
void StmtProfiler::VisitOMPTeamsGenericLoopDirective(
const OMPTeamsGenericLoopDirective *S) { … }
void StmtProfiler::VisitOMPTargetTeamsGenericLoopDirective(
const OMPTargetTeamsGenericLoopDirective *S) { … }
void StmtProfiler::VisitOMPParallelGenericLoopDirective(
const OMPParallelGenericLoopDirective *S) { … }
void StmtProfiler::VisitOMPTargetParallelGenericLoopDirective(
const OMPTargetParallelGenericLoopDirective *S) { … }
void StmtProfiler::VisitExpr(const Expr *S) { … }
void StmtProfiler::VisitConstantExpr(const ConstantExpr *S) { … }
void StmtProfiler::VisitDeclRefExpr(const DeclRefExpr *S) { … }
void StmtProfiler::VisitSYCLUniqueStableNameExpr(
const SYCLUniqueStableNameExpr *S) { … }
void StmtProfiler::VisitPredefinedExpr(const PredefinedExpr *S) { … }
void StmtProfiler::VisitOpenACCAsteriskSizeExpr(
const OpenACCAsteriskSizeExpr *S) { … }
void StmtProfiler::VisitIntegerLiteral(const IntegerLiteral *S) { … }
void StmtProfiler::VisitFixedPointLiteral(const FixedPointLiteral *S) { … }
void StmtProfiler::VisitCharacterLiteral(const CharacterLiteral *S) { … }
void StmtProfiler::VisitFloatingLiteral(const FloatingLiteral *S) { … }
void StmtProfiler::VisitImaginaryLiteral(const ImaginaryLiteral *S) { … }
void StmtProfiler::VisitStringLiteral(const StringLiteral *S) { … }
void StmtProfiler::VisitParenExpr(const ParenExpr *S) { … }
void StmtProfiler::VisitParenListExpr(const ParenListExpr *S) { … }
void StmtProfiler::VisitUnaryOperator(const UnaryOperator *S) { … }
void StmtProfiler::VisitOffsetOfExpr(const OffsetOfExpr *S) { … }
void
StmtProfiler::VisitUnaryExprOrTypeTraitExpr(const UnaryExprOrTypeTraitExpr *S) { … }
void StmtProfiler::VisitArraySubscriptExpr(const ArraySubscriptExpr *S) { … }
void StmtProfiler::VisitMatrixSubscriptExpr(const MatrixSubscriptExpr *S) { … }
void StmtProfiler::VisitArraySectionExpr(const ArraySectionExpr *S) { … }
void StmtProfiler::VisitOMPArrayShapingExpr(const OMPArrayShapingExpr *S) { … }
void StmtProfiler::VisitOMPIteratorExpr(const OMPIteratorExpr *S) { … }
void StmtProfiler::VisitCallExpr(const CallExpr *S) { … }
void StmtProfiler::VisitMemberExpr(const MemberExpr *S) { … }
void StmtProfiler::VisitCompoundLiteralExpr(const CompoundLiteralExpr *S) { … }
void StmtProfiler::VisitCastExpr(const CastExpr *S) { … }
void StmtProfiler::VisitImplicitCastExpr(const ImplicitCastExpr *S) { … }
void StmtProfiler::VisitExplicitCastExpr(const ExplicitCastExpr *S) { … }
void StmtProfiler::VisitCStyleCastExpr(const CStyleCastExpr *S) { … }
void StmtProfiler::VisitBinaryOperator(const BinaryOperator *S) { … }
void
StmtProfiler::VisitCompoundAssignOperator(const CompoundAssignOperator *S) { … }
void StmtProfiler::VisitConditionalOperator(const ConditionalOperator *S) { … }
void StmtProfiler::VisitBinaryConditionalOperator(
const BinaryConditionalOperator *S) { … }
void StmtProfiler::VisitAddrLabelExpr(const AddrLabelExpr *S) { … }
void StmtProfiler::VisitStmtExpr(const StmtExpr *S) { … }
void StmtProfiler::VisitShuffleVectorExpr(const ShuffleVectorExpr *S) { … }
void StmtProfiler::VisitConvertVectorExpr(const ConvertVectorExpr *S) { … }
void StmtProfiler::VisitChooseExpr(const ChooseExpr *S) { … }
void StmtProfiler::VisitGNUNullExpr(const GNUNullExpr *S) { … }
void StmtProfiler::VisitVAArgExpr(const VAArgExpr *S) { … }
void StmtProfiler::VisitInitListExpr(const InitListExpr *S) { … }
void StmtProfiler::VisitDesignatedInitExpr(const DesignatedInitExpr *S) { … }
void StmtProfiler::VisitDesignatedInitUpdateExpr(
const DesignatedInitUpdateExpr *S) { … }
void StmtProfiler::VisitArrayInitLoopExpr(const ArrayInitLoopExpr *S) { … }
void StmtProfiler::VisitArrayInitIndexExpr(const ArrayInitIndexExpr *S) { … }
void StmtProfiler::VisitNoInitExpr(const NoInitExpr *S) { … }
void StmtProfiler::VisitImplicitValueInitExpr(const ImplicitValueInitExpr *S) { … }
void StmtProfiler::VisitExtVectorElementExpr(const ExtVectorElementExpr *S) { … }
void StmtProfiler::VisitBlockExpr(const BlockExpr *S) { … }
void StmtProfiler::VisitGenericSelectionExpr(const GenericSelectionExpr *S) { … }
void StmtProfiler::VisitPseudoObjectExpr(const PseudoObjectExpr *S) { … }
void StmtProfiler::VisitAtomicExpr(const AtomicExpr *S) { … }
void StmtProfiler::VisitConceptSpecializationExpr(
const ConceptSpecializationExpr *S) { … }
void StmtProfiler::VisitRequiresExpr(const RequiresExpr *S) { … }
static Stmt::StmtClass DecodeOperatorCall(const CXXOperatorCallExpr *S,
UnaryOperatorKind &UnaryOp,
BinaryOperatorKind &BinaryOp,
unsigned &NumArgs) { … }
#if defined(_MSC_VER) && !defined(__clang__)
#if _MSC_VER == 1911
#pragma optimize("", off)
#endif
#endif
void StmtProfiler::VisitCXXOperatorCallExpr(const CXXOperatorCallExpr *S) { … }
void StmtProfiler::VisitCXXRewrittenBinaryOperator(
const CXXRewrittenBinaryOperator *S) { … }
#if defined(_MSC_VER) && !defined(__clang__)
#if _MSC_VER == 1911
#pragma optimize("", on)
#endif
#endif
void StmtProfiler::VisitCXXMemberCallExpr(const CXXMemberCallExpr *S) { … }
void StmtProfiler::VisitCUDAKernelCallExpr(const CUDAKernelCallExpr *S) { … }
void StmtProfiler::VisitAsTypeExpr(const AsTypeExpr *S) { … }
void StmtProfiler::VisitCXXNamedCastExpr(const CXXNamedCastExpr *S) { … }
void StmtProfiler::VisitCXXStaticCastExpr(const CXXStaticCastExpr *S) { … }
void StmtProfiler::VisitCXXDynamicCastExpr(const CXXDynamicCastExpr *S) { … }
void
StmtProfiler::VisitCXXReinterpretCastExpr(const CXXReinterpretCastExpr *S) { … }
void StmtProfiler::VisitCXXConstCastExpr(const CXXConstCastExpr *S) { … }
void StmtProfiler::VisitBuiltinBitCastExpr(const BuiltinBitCastExpr *S) { … }
void StmtProfiler::VisitCXXAddrspaceCastExpr(const CXXAddrspaceCastExpr *S) { … }
void StmtProfiler::VisitUserDefinedLiteral(const UserDefinedLiteral *S) { … }
void StmtProfiler::VisitCXXBoolLiteralExpr(const CXXBoolLiteralExpr *S) { … }
void StmtProfiler::VisitCXXNullPtrLiteralExpr(const CXXNullPtrLiteralExpr *S) { … }
void StmtProfiler::VisitCXXStdInitializerListExpr(
const CXXStdInitializerListExpr *S) { … }
void StmtProfiler::VisitCXXTypeidExpr(const CXXTypeidExpr *S) { … }
void StmtProfiler::VisitCXXUuidofExpr(const CXXUuidofExpr *S) { … }
void StmtProfiler::VisitMSPropertyRefExpr(const MSPropertyRefExpr *S) { … }
void StmtProfiler::VisitMSPropertySubscriptExpr(
const MSPropertySubscriptExpr *S) { … }
void StmtProfiler::VisitCXXThisExpr(const CXXThisExpr *S) { … }
void StmtProfiler::VisitCXXThrowExpr(const CXXThrowExpr *S) { … }
void StmtProfiler::VisitCXXDefaultArgExpr(const CXXDefaultArgExpr *S) { … }
void StmtProfiler::VisitCXXDefaultInitExpr(const CXXDefaultInitExpr *S) { … }
void StmtProfiler::VisitCXXBindTemporaryExpr(const CXXBindTemporaryExpr *S) { … }
void StmtProfiler::VisitCXXConstructExpr(const CXXConstructExpr *S) { … }
void StmtProfiler::VisitCXXInheritedCtorInitExpr(
const CXXInheritedCtorInitExpr *S) { … }
void StmtProfiler::VisitCXXFunctionalCastExpr(const CXXFunctionalCastExpr *S) { … }
void
StmtProfiler::VisitCXXTemporaryObjectExpr(const CXXTemporaryObjectExpr *S) { … }
void
StmtProfiler::VisitLambdaExpr(const LambdaExpr *S) { … }
void
StmtProfiler::VisitCXXScalarValueInitExpr(const CXXScalarValueInitExpr *S) { … }
void StmtProfiler::VisitCXXDeleteExpr(const CXXDeleteExpr *S) { … }
void StmtProfiler::VisitCXXNewExpr(const CXXNewExpr *S) { … }
void
StmtProfiler::VisitCXXPseudoDestructorExpr(const CXXPseudoDestructorExpr *S) { … }
void StmtProfiler::VisitOverloadExpr(const OverloadExpr *S) { … }
void
StmtProfiler::VisitUnresolvedLookupExpr(const UnresolvedLookupExpr *S) { … }
void StmtProfiler::VisitTypeTraitExpr(const TypeTraitExpr *S) { … }
void StmtProfiler::VisitArrayTypeTraitExpr(const ArrayTypeTraitExpr *S) { … }
void StmtProfiler::VisitExpressionTraitExpr(const ExpressionTraitExpr *S) { … }
void StmtProfiler::VisitDependentScopeDeclRefExpr(
const DependentScopeDeclRefExpr *S) { … }
void StmtProfiler::VisitExprWithCleanups(const ExprWithCleanups *S) { … }
void StmtProfiler::VisitCXXUnresolvedConstructExpr(
const CXXUnresolvedConstructExpr *S) { … }
void StmtProfiler::VisitCXXDependentScopeMemberExpr(
const CXXDependentScopeMemberExpr *S) { … }
void StmtProfiler::VisitUnresolvedMemberExpr(const UnresolvedMemberExpr *S) { … }
void StmtProfiler::VisitCXXNoexceptExpr(const CXXNoexceptExpr *S) { … }
void StmtProfiler::VisitPackExpansionExpr(const PackExpansionExpr *S) { … }
void StmtProfiler::VisitSizeOfPackExpr(const SizeOfPackExpr *S) { … }
void StmtProfiler::VisitPackIndexingExpr(const PackIndexingExpr *E) { … }
void StmtProfiler::VisitSubstNonTypeTemplateParmPackExpr(
const SubstNonTypeTemplateParmPackExpr *S) { … }
void StmtProfiler::VisitSubstNonTypeTemplateParmExpr(
const SubstNonTypeTemplateParmExpr *E) { … }
void StmtProfiler::VisitFunctionParmPackExpr(const FunctionParmPackExpr *S) { … }
void StmtProfiler::VisitMaterializeTemporaryExpr(
const MaterializeTemporaryExpr *S) { … }
void StmtProfiler::VisitCXXFoldExpr(const CXXFoldExpr *S) { … }
void StmtProfiler::VisitCXXParenListInitExpr(const CXXParenListInitExpr *S) { … }
void StmtProfiler::VisitCoroutineBodyStmt(const CoroutineBodyStmt *S) { … }
void StmtProfiler::VisitCoreturnStmt(const CoreturnStmt *S) { … }
void StmtProfiler::VisitCoawaitExpr(const CoawaitExpr *S) { … }
void StmtProfiler::VisitDependentCoawaitExpr(const DependentCoawaitExpr *S) { … }
void StmtProfiler::VisitCoyieldExpr(const CoyieldExpr *S) { … }
void StmtProfiler::VisitOpaqueValueExpr(const OpaqueValueExpr *E) { … }
void StmtProfiler::VisitTypoExpr(const TypoExpr *E) { … }
void StmtProfiler::VisitSourceLocExpr(const SourceLocExpr *E) { … }
void StmtProfiler::VisitEmbedExpr(const EmbedExpr *E) { … }
void StmtProfiler::VisitRecoveryExpr(const RecoveryExpr *E) { … }
void StmtProfiler::VisitObjCStringLiteral(const ObjCStringLiteral *S) { … }
void StmtProfiler::VisitObjCBoxedExpr(const ObjCBoxedExpr *E) { … }
void StmtProfiler::VisitObjCArrayLiteral(const ObjCArrayLiteral *E) { … }
void StmtProfiler::VisitObjCDictionaryLiteral(const ObjCDictionaryLiteral *E) { … }
void StmtProfiler::VisitObjCEncodeExpr(const ObjCEncodeExpr *S) { … }
void StmtProfiler::VisitObjCSelectorExpr(const ObjCSelectorExpr *S) { … }
void StmtProfiler::VisitObjCProtocolExpr(const ObjCProtocolExpr *S) { … }
void StmtProfiler::VisitObjCIvarRefExpr(const ObjCIvarRefExpr *S) { … }
void StmtProfiler::VisitObjCPropertyRefExpr(const ObjCPropertyRefExpr *S) { … }
void StmtProfiler::VisitObjCSubscriptRefExpr(const ObjCSubscriptRefExpr *S) { … }
void StmtProfiler::VisitObjCMessageExpr(const ObjCMessageExpr *S) { … }
void StmtProfiler::VisitObjCIsaExpr(const ObjCIsaExpr *S) { … }
void StmtProfiler::VisitObjCBoolLiteralExpr(const ObjCBoolLiteralExpr *S) { … }
void StmtProfiler::VisitObjCIndirectCopyRestoreExpr(
const ObjCIndirectCopyRestoreExpr *S) { … }
void StmtProfiler::VisitObjCBridgedCastExpr(const ObjCBridgedCastExpr *S) { … }
void StmtProfiler::VisitObjCAvailabilityCheckExpr(
const ObjCAvailabilityCheckExpr *S) { … }
void StmtProfiler::VisitTemplateArguments(const TemplateArgumentLoc *Args,
unsigned NumArgs) { … }
void StmtProfiler::VisitTemplateArgument(const TemplateArgument &Arg) { … }
namespace {
class OpenACCClauseProfiler
: public OpenACCClauseVisitor<OpenACCClauseProfiler> { … };
void OpenACCClauseProfiler::VisitDefaultClause(
const OpenACCDefaultClause &Clause) { … }
void OpenACCClauseProfiler::VisitIfClause(const OpenACCIfClause &Clause) { … }
void OpenACCClauseProfiler::VisitCopyClause(const OpenACCCopyClause &Clause) { … }
void OpenACCClauseProfiler::VisitCopyInClause(
const OpenACCCopyInClause &Clause) { … }
void OpenACCClauseProfiler::VisitCopyOutClause(
const OpenACCCopyOutClause &Clause) { … }
void OpenACCClauseProfiler::VisitCreateClause(
const OpenACCCreateClause &Clause) { … }
void OpenACCClauseProfiler::VisitSelfClause(const OpenACCSelfClause &Clause) { … }
void OpenACCClauseProfiler::VisitNumGangsClause(
const OpenACCNumGangsClause &Clause) { … }
void OpenACCClauseProfiler::VisitTileClause(const OpenACCTileClause &Clause) { … }
void OpenACCClauseProfiler::VisitNumWorkersClause(
const OpenACCNumWorkersClause &Clause) { … }
void OpenACCClauseProfiler::VisitCollapseClause(
const OpenACCCollapseClause &Clause) { … }
void OpenACCClauseProfiler::VisitPrivateClause(
const OpenACCPrivateClause &Clause) { … }
void OpenACCClauseProfiler::VisitFirstPrivateClause(
const OpenACCFirstPrivateClause &Clause) { … }
void OpenACCClauseProfiler::VisitAttachClause(
const OpenACCAttachClause &Clause) { … }
void OpenACCClauseProfiler::VisitDevicePtrClause(
const OpenACCDevicePtrClause &Clause) { … }
void OpenACCClauseProfiler::VisitNoCreateClause(
const OpenACCNoCreateClause &Clause) { … }
void OpenACCClauseProfiler::VisitPresentClause(
const OpenACCPresentClause &Clause) { … }
void OpenACCClauseProfiler::VisitVectorLengthClause(
const OpenACCVectorLengthClause &Clause) { … }
void OpenACCClauseProfiler::VisitAsyncClause(const OpenACCAsyncClause &Clause) { … }
void OpenACCClauseProfiler::VisitWaitClause(const OpenACCWaitClause &Clause) { … }
void OpenACCClauseProfiler::VisitDeviceTypeClause(
const OpenACCDeviceTypeClause &Clause) { … }
void OpenACCClauseProfiler::VisitAutoClause(const OpenACCAutoClause &Clause) { … }
void OpenACCClauseProfiler::VisitIndependentClause(
const OpenACCIndependentClause &Clause) { … }
void OpenACCClauseProfiler::VisitSeqClause(const OpenACCSeqClause &Clause) { … }
void OpenACCClauseProfiler::VisitReductionClause(
const OpenACCReductionClause &Clause) { … }
}
void StmtProfiler::VisitOpenACCComputeConstruct(
const OpenACCComputeConstruct *S) { … }
void StmtProfiler::VisitOpenACCLoopConstruct(const OpenACCLoopConstruct *S) { … }
void StmtProfiler::VisitHLSLOutArgExpr(const HLSLOutArgExpr *S) { … }
void Stmt::Profile(llvm::FoldingSetNodeID &ID, const ASTContext &Context,
bool Canonical, bool ProfileLambdaExpr) const { … }
void Stmt::ProcessODRHash(llvm::FoldingSetNodeID &ID,
class ODRHash &Hash) const { … }