100d0749fSEthan Luis McDonough //===-- FeatureList.cpp ---------------------------------------------------===// 200d0749fSEthan Luis McDonough // 300d0749fSEthan Luis McDonough // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 400d0749fSEthan Luis McDonough // See https://llvm.org/LICENSE.txt for license information. 500d0749fSEthan Luis McDonough // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 600d0749fSEthan Luis McDonough // 700d0749fSEthan Luis McDonough //===----------------------------------------------------------------------===// 800d0749fSEthan Luis McDonough // 900d0749fSEthan Luis McDonough // A plugin that counts the amount of times a particular parse tree node 1000d0749fSEthan Luis McDonough // occurs. This plugin should cover each feature covered in dump-parse-tree.h 1100d0749fSEthan Luis McDonough // 1200d0749fSEthan Luis McDonough //===----------------------------------------------------------------------===// 1300d0749fSEthan Luis McDonough 1400d0749fSEthan Luis McDonough #include "flang/Frontend/FrontendActions.h" 1500d0749fSEthan Luis McDonough #include "flang/Frontend/FrontendPluginRegistry.h" 1600d0749fSEthan Luis McDonough #include "flang/Parser/parse-tree-visitor.h" 1700d0749fSEthan Luis McDonough #include "flang/Parser/parse-tree.h" 1800d0749fSEthan Luis McDonough #include "flang/Parser/parsing.h" 1900d0749fSEthan Luis McDonough 2000d0749fSEthan Luis McDonough #include <algorithm> 2100d0749fSEthan Luis McDonough #include <cstring> 2200d0749fSEthan Luis McDonough #include <unordered_map> 2300d0749fSEthan Luis McDonough #include <utility> 2400d0749fSEthan Luis McDonough #include <vector> 2500d0749fSEthan Luis McDonough 26edc2fb07SSergio Afonso using namespace Fortran::common; 2700d0749fSEthan Luis McDonough using namespace Fortran::frontend; 2800d0749fSEthan Luis McDonough using namespace Fortran::parser; 2900d0749fSEthan Luis McDonough using namespace Fortran; 3000d0749fSEthan Luis McDonough 3100d0749fSEthan Luis McDonough #define READ_FEATURE_CUST(classname, n) \ 3200d0749fSEthan Luis McDonough bool Pre(const classname &) { \ 3300d0749fSEthan Luis McDonough record(#n); \ 3400d0749fSEthan Luis McDonough return true; \ 3500d0749fSEthan Luis McDonough } \ 3600d0749fSEthan Luis McDonough void Post(const classname &) {} 3700d0749fSEthan Luis McDonough 3800d0749fSEthan Luis McDonough #define READ_FEATURE(classname) READ_FEATURE_CUST(classname, classname) 3900d0749fSEthan Luis McDonough 4000d0749fSEthan Luis McDonough struct NodeVisitor { 4100d0749fSEthan Luis McDonough private: 4200d0749fSEthan Luis McDonough std::unordered_map<const char *, unsigned int> frequencies; 4300d0749fSEthan Luis McDonough 4400d0749fSEthan Luis McDonough void record(const char *name) { 4500d0749fSEthan Luis McDonough auto [it, ins] = frequencies.insert({name, 1}); 4600d0749fSEthan Luis McDonough if (!ins) { 4700d0749fSEthan Luis McDonough it->second++; 4800d0749fSEthan Luis McDonough } 4900d0749fSEthan Luis McDonough } 5000d0749fSEthan Luis McDonough 5100d0749fSEthan Luis McDonough public: 5200d0749fSEthan Luis McDonough const std::unordered_map<const char *, unsigned int> &getFrequencies() const { 5300d0749fSEthan Luis McDonough return frequencies; 5400d0749fSEthan Luis McDonough } 5500d0749fSEthan Luis McDonough 5600d0749fSEthan Luis McDonough READ_FEATURE_CUST(format::ControlEditDesc, ControlEditDesc) 5700d0749fSEthan Luis McDonough READ_FEATURE_CUST(format::DerivedTypeDataEditDesc, DerivedTypeDataEditDesc) 5800d0749fSEthan Luis McDonough READ_FEATURE_CUST(format::FormatItem, FormatItem) 5900d0749fSEthan Luis McDonough READ_FEATURE_CUST(format::FormatSpecification, FormatSpecification) 6000d0749fSEthan Luis McDonough READ_FEATURE_CUST( 6100d0749fSEthan Luis McDonough format::IntrinsicTypeDataEditDesc, IntrinsicTypeDataEditDesc) 6200d0749fSEthan Luis McDonough READ_FEATURE(Abstract) 6300d0749fSEthan Luis McDonough READ_FEATURE(AccAtomicCapture) 6400d0749fSEthan Luis McDonough READ_FEATURE(AccAtomicCapture::Stmt1) 6500d0749fSEthan Luis McDonough READ_FEATURE(AccAtomicCapture::Stmt2) 6600d0749fSEthan Luis McDonough READ_FEATURE(AccAtomicRead) 6700d0749fSEthan Luis McDonough READ_FEATURE(AccAtomicUpdate) 6800d0749fSEthan Luis McDonough READ_FEATURE(AccAtomicWrite) 6900d0749fSEthan Luis McDonough READ_FEATURE(AccBeginBlockDirective) 7000d0749fSEthan Luis McDonough READ_FEATURE(AccBeginCombinedDirective) 7100d0749fSEthan Luis McDonough READ_FEATURE(AccBeginLoopDirective) 7200d0749fSEthan Luis McDonough READ_FEATURE(AccBlockDirective) 7300d0749fSEthan Luis McDonough READ_FEATURE(AccClause) 7400d0749fSEthan Luis McDonough READ_FEATURE(AccBindClause) 7500d0749fSEthan Luis McDonough READ_FEATURE(AccDefaultClause) 7600d0749fSEthan Luis McDonough READ_FEATURE(AccClauseList) 7700d0749fSEthan Luis McDonough READ_FEATURE(AccCombinedDirective) 7800d0749fSEthan Luis McDonough READ_FEATURE(AccDataModifier) 7900d0749fSEthan Luis McDonough READ_FEATURE(AccDataModifier::Modifier) 8000d0749fSEthan Luis McDonough READ_FEATURE(AccDeclarativeDirective) 8100d0749fSEthan Luis McDonough READ_FEATURE(AccEndAtomic) 8200d0749fSEthan Luis McDonough READ_FEATURE(AccEndBlockDirective) 8300d0749fSEthan Luis McDonough READ_FEATURE(AccEndCombinedDirective) 845923e46fSValentin Clement READ_FEATURE(AccGangArg) 8500d0749fSEthan Luis McDonough READ_FEATURE(AccObject) 8600d0749fSEthan Luis McDonough READ_FEATURE(AccObjectList) 8700d0749fSEthan Luis McDonough READ_FEATURE(AccObjectListWithModifier) 8800d0749fSEthan Luis McDonough READ_FEATURE(AccObjectListWithReduction) 8900d0749fSEthan Luis McDonough READ_FEATURE(AccSizeExpr) 9000d0749fSEthan Luis McDonough READ_FEATURE(AccSizeExprList) 9100d0749fSEthan Luis McDonough READ_FEATURE(AccSelfClause) 9200d0749fSEthan Luis McDonough READ_FEATURE(AccStandaloneDirective) 9300d0749fSEthan Luis McDonough READ_FEATURE(AccDeviceTypeExpr) 9400d0749fSEthan Luis McDonough READ_FEATURE(AccDeviceTypeExprList) 9500d0749fSEthan Luis McDonough READ_FEATURE(AccTileExpr) 9600d0749fSEthan Luis McDonough READ_FEATURE(AccTileExprList) 9700d0749fSEthan Luis McDonough READ_FEATURE(AccLoopDirective) 9800d0749fSEthan Luis McDonough READ_FEATURE(AccWaitArgument) 9900d0749fSEthan Luis McDonough READ_FEATURE(AcImpliedDo) 10000d0749fSEthan Luis McDonough READ_FEATURE(AcImpliedDoControl) 10100d0749fSEthan Luis McDonough READ_FEATURE(AcValue) 10200d0749fSEthan Luis McDonough READ_FEATURE(AccessStmt) 10300d0749fSEthan Luis McDonough READ_FEATURE(AccessId) 10400d0749fSEthan Luis McDonough READ_FEATURE(AccessSpec) 10500d0749fSEthan Luis McDonough READ_FEATURE(AccessSpec::Kind) 10600d0749fSEthan Luis McDonough READ_FEATURE(AcSpec) 10700d0749fSEthan Luis McDonough READ_FEATURE(ActionStmt) 10800d0749fSEthan Luis McDonough READ_FEATURE(ActualArg) 10900d0749fSEthan Luis McDonough READ_FEATURE(ActualArg::PercentRef) 11000d0749fSEthan Luis McDonough READ_FEATURE(ActualArg::PercentVal) 11100d0749fSEthan Luis McDonough READ_FEATURE(ActualArgSpec) 11200d0749fSEthan Luis McDonough READ_FEATURE(AcValue::Triplet) 11300d0749fSEthan Luis McDonough READ_FEATURE(AllocOpt) 11400d0749fSEthan Luis McDonough READ_FEATURE(AllocOpt::Mold) 11500d0749fSEthan Luis McDonough READ_FEATURE(AllocOpt::Source) 11600d0749fSEthan Luis McDonough READ_FEATURE(Allocatable) 11700d0749fSEthan Luis McDonough READ_FEATURE(AllocatableStmt) 11800d0749fSEthan Luis McDonough READ_FEATURE(AllocateCoarraySpec) 11900d0749fSEthan Luis McDonough READ_FEATURE(AllocateObject) 12000d0749fSEthan Luis McDonough READ_FEATURE(AllocateShapeSpec) 12100d0749fSEthan Luis McDonough READ_FEATURE(AllocateStmt) 12200d0749fSEthan Luis McDonough READ_FEATURE(Allocation) 12300d0749fSEthan Luis McDonough READ_FEATURE(AltReturnSpec) 12400d0749fSEthan Luis McDonough READ_FEATURE(ArithmeticIfStmt) 12500d0749fSEthan Luis McDonough READ_FEATURE(ArrayConstructor) 12600d0749fSEthan Luis McDonough READ_FEATURE(ArrayElement) 12700d0749fSEthan Luis McDonough READ_FEATURE(ArraySpec) 12800d0749fSEthan Luis McDonough READ_FEATURE(AssignStmt) 12900d0749fSEthan Luis McDonough READ_FEATURE(AssignedGotoStmt) 13000d0749fSEthan Luis McDonough READ_FEATURE(AssignmentStmt) 13100d0749fSEthan Luis McDonough READ_FEATURE(AssociateConstruct) 13200d0749fSEthan Luis McDonough READ_FEATURE(AssociateStmt) 13300d0749fSEthan Luis McDonough READ_FEATURE(Association) 13400d0749fSEthan Luis McDonough READ_FEATURE(AssumedImpliedSpec) 13500d0749fSEthan Luis McDonough READ_FEATURE(AssumedRankSpec) 13600d0749fSEthan Luis McDonough READ_FEATURE(AssumedShapeSpec) 13700d0749fSEthan Luis McDonough READ_FEATURE(AssumedSizeSpec) 13800d0749fSEthan Luis McDonough READ_FEATURE(Asynchronous) 13900d0749fSEthan Luis McDonough READ_FEATURE(AsynchronousStmt) 14000d0749fSEthan Luis McDonough READ_FEATURE(AttrSpec) 14100d0749fSEthan Luis McDonough READ_FEATURE(BOZLiteralConstant) 14200d0749fSEthan Luis McDonough READ_FEATURE(BackspaceStmt) 14300d0749fSEthan Luis McDonough READ_FEATURE(BasedPointer) 14400d0749fSEthan Luis McDonough READ_FEATURE(BasedPointerStmt) 14500d0749fSEthan Luis McDonough READ_FEATURE(BindAttr) 14600d0749fSEthan Luis McDonough READ_FEATURE(BindAttr::Deferred) 14700d0749fSEthan Luis McDonough READ_FEATURE(BindAttr::Non_Overridable) 14800d0749fSEthan Luis McDonough READ_FEATURE(BindEntity) 14900d0749fSEthan Luis McDonough READ_FEATURE(BindEntity::Kind) 15000d0749fSEthan Luis McDonough READ_FEATURE(BindStmt) 15100d0749fSEthan Luis McDonough READ_FEATURE(Block) 15200d0749fSEthan Luis McDonough READ_FEATURE(BlockConstruct) 15300d0749fSEthan Luis McDonough READ_FEATURE(BlockData) 15400d0749fSEthan Luis McDonough READ_FEATURE(BlockDataStmt) 15500d0749fSEthan Luis McDonough READ_FEATURE(BlockSpecificationPart) 15600d0749fSEthan Luis McDonough READ_FEATURE(BlockStmt) 15700d0749fSEthan Luis McDonough READ_FEATURE(BoundsRemapping) 15800d0749fSEthan Luis McDonough READ_FEATURE(BoundsSpec) 15900d0749fSEthan Luis McDonough READ_FEATURE(Call) 16000d0749fSEthan Luis McDonough READ_FEATURE(CallStmt) 16100d0749fSEthan Luis McDonough READ_FEATURE(CaseConstruct) 16200d0749fSEthan Luis McDonough READ_FEATURE(CaseConstruct::Case) 16300d0749fSEthan Luis McDonough READ_FEATURE(CaseSelector) 16400d0749fSEthan Luis McDonough READ_FEATURE(CaseStmt) 16500d0749fSEthan Luis McDonough READ_FEATURE(CaseValueRange) 16600d0749fSEthan Luis McDonough READ_FEATURE(CaseValueRange::Range) 16700d0749fSEthan Luis McDonough READ_FEATURE(ChangeTeamConstruct) 16800d0749fSEthan Luis McDonough READ_FEATURE(ChangeTeamStmt) 16900d0749fSEthan Luis McDonough READ_FEATURE(CharLength) 17000d0749fSEthan Luis McDonough READ_FEATURE(CharLiteralConstant) 17100d0749fSEthan Luis McDonough READ_FEATURE(CharLiteralConstantSubstring) 17200d0749fSEthan Luis McDonough READ_FEATURE(CharSelector) 17300d0749fSEthan Luis McDonough READ_FEATURE(CharSelector::LengthAndKind) 17400d0749fSEthan Luis McDonough READ_FEATURE(CloseStmt) 17500d0749fSEthan Luis McDonough READ_FEATURE(CloseStmt::CloseSpec) 17600d0749fSEthan Luis McDonough READ_FEATURE(CoarrayAssociation) 17700d0749fSEthan Luis McDonough READ_FEATURE(CoarraySpec) 17800d0749fSEthan Luis McDonough READ_FEATURE(CodimensionDecl) 17900d0749fSEthan Luis McDonough READ_FEATURE(CodimensionStmt) 18000d0749fSEthan Luis McDonough READ_FEATURE(CoindexedNamedObject) 18100d0749fSEthan Luis McDonough READ_FEATURE(CommonBlockObject) 18200d0749fSEthan Luis McDonough READ_FEATURE(CommonStmt) 18300d0749fSEthan Luis McDonough READ_FEATURE(CommonStmt::Block) 18400d0749fSEthan Luis McDonough READ_FEATURE(CompilerDirective) 18500d0749fSEthan Luis McDonough READ_FEATURE(CompilerDirective::IgnoreTKR) 18600d0749fSEthan Luis McDonough READ_FEATURE(CompilerDirective::LoopCount) 18700d0749fSEthan Luis McDonough READ_FEATURE(CompilerDirective::NameValue) 18800d0749fSEthan Luis McDonough READ_FEATURE(ComplexLiteralConstant) 18900d0749fSEthan Luis McDonough READ_FEATURE(ComplexPart) 19000d0749fSEthan Luis McDonough READ_FEATURE(ComponentArraySpec) 19100d0749fSEthan Luis McDonough READ_FEATURE(ComponentAttrSpec) 19200d0749fSEthan Luis McDonough READ_FEATURE(ComponentDataSource) 19300d0749fSEthan Luis McDonough READ_FEATURE(ComponentDecl) 19400d0749fSEthan Luis McDonough READ_FEATURE(FillDecl) 19500d0749fSEthan Luis McDonough READ_FEATURE(ComponentOrFill) 19600d0749fSEthan Luis McDonough READ_FEATURE(ComponentDefStmt) 19700d0749fSEthan Luis McDonough READ_FEATURE(ComponentSpec) 19800d0749fSEthan Luis McDonough READ_FEATURE(ComputedGotoStmt) 19900d0749fSEthan Luis McDonough READ_FEATURE(ConcurrentControl) 20000d0749fSEthan Luis McDonough READ_FEATURE(ConcurrentHeader) 20100d0749fSEthan Luis McDonough READ_FEATURE(ConnectSpec) 20200d0749fSEthan Luis McDonough READ_FEATURE(ConnectSpec::CharExpr) 20300d0749fSEthan Luis McDonough READ_FEATURE(ConnectSpec::CharExpr::Kind) 20400d0749fSEthan Luis McDonough READ_FEATURE(ConnectSpec::Newunit) 20500d0749fSEthan Luis McDonough READ_FEATURE(ConnectSpec::Recl) 20600d0749fSEthan Luis McDonough READ_FEATURE(ContainsStmt) 20700d0749fSEthan Luis McDonough READ_FEATURE(Contiguous) 20800d0749fSEthan Luis McDonough READ_FEATURE(ContiguousStmt) 20900d0749fSEthan Luis McDonough READ_FEATURE(ContinueStmt) 21000d0749fSEthan Luis McDonough READ_FEATURE(CriticalConstruct) 21100d0749fSEthan Luis McDonough READ_FEATURE(CriticalStmt) 21200d0749fSEthan Luis McDonough READ_FEATURE(CycleStmt) 21300d0749fSEthan Luis McDonough READ_FEATURE(DataComponentDefStmt) 21400d0749fSEthan Luis McDonough READ_FEATURE(DataIDoObject) 21500d0749fSEthan Luis McDonough READ_FEATURE(DataImpliedDo) 21600d0749fSEthan Luis McDonough READ_FEATURE(DataRef) 21700d0749fSEthan Luis McDonough READ_FEATURE(DataStmt) 21800d0749fSEthan Luis McDonough READ_FEATURE(DataStmtConstant) 21900d0749fSEthan Luis McDonough READ_FEATURE(DataStmtObject) 22000d0749fSEthan Luis McDonough READ_FEATURE(DataStmtRepeat) 22100d0749fSEthan Luis McDonough READ_FEATURE(DataStmtSet) 22200d0749fSEthan Luis McDonough READ_FEATURE(DataStmtValue) 22300d0749fSEthan Luis McDonough READ_FEATURE(DeallocateStmt) 22400d0749fSEthan Luis McDonough READ_FEATURE(DeclarationConstruct) 22500d0749fSEthan Luis McDonough READ_FEATURE(DeclarationTypeSpec) 22600d0749fSEthan Luis McDonough READ_FEATURE(DeclarationTypeSpec::Class) 22700d0749fSEthan Luis McDonough READ_FEATURE(DeclarationTypeSpec::ClassStar) 22800d0749fSEthan Luis McDonough READ_FEATURE(DeclarationTypeSpec::Record) 22900d0749fSEthan Luis McDonough READ_FEATURE(DeclarationTypeSpec::Type) 23000d0749fSEthan Luis McDonough READ_FEATURE(DeclarationTypeSpec::TypeStar) 23100d0749fSEthan Luis McDonough READ_FEATURE(Default) 23200d0749fSEthan Luis McDonough READ_FEATURE(DeferredCoshapeSpecList) 23300d0749fSEthan Luis McDonough READ_FEATURE(DeferredShapeSpecList) 23400d0749fSEthan Luis McDonough READ_FEATURE(DefinedOpName) 23500d0749fSEthan Luis McDonough READ_FEATURE(DefinedOperator) 23600d0749fSEthan Luis McDonough READ_FEATURE(DefinedOperator::IntrinsicOperator) 23700d0749fSEthan Luis McDonough READ_FEATURE(DerivedTypeDef) 23800d0749fSEthan Luis McDonough READ_FEATURE(DerivedTypeSpec) 23900d0749fSEthan Luis McDonough READ_FEATURE(DerivedTypeStmt) 24000d0749fSEthan Luis McDonough READ_FEATURE(Designator) 24100d0749fSEthan Luis McDonough READ_FEATURE(DimensionStmt) 24200d0749fSEthan Luis McDonough READ_FEATURE(DimensionStmt::Declaration) 24300d0749fSEthan Luis McDonough READ_FEATURE(DoConstruct) 24400d0749fSEthan Luis McDonough READ_FEATURE(DummyArg) 24500d0749fSEthan Luis McDonough READ_FEATURE(ElseIfStmt) 24600d0749fSEthan Luis McDonough READ_FEATURE(ElseStmt) 24700d0749fSEthan Luis McDonough READ_FEATURE(ElsewhereStmt) 24800d0749fSEthan Luis McDonough READ_FEATURE(EndAssociateStmt) 24900d0749fSEthan Luis McDonough READ_FEATURE(EndBlockDataStmt) 25000d0749fSEthan Luis McDonough READ_FEATURE(EndBlockStmt) 25100d0749fSEthan Luis McDonough READ_FEATURE(EndChangeTeamStmt) 25200d0749fSEthan Luis McDonough READ_FEATURE(EndCriticalStmt) 25300d0749fSEthan Luis McDonough READ_FEATURE(EndDoStmt) 25400d0749fSEthan Luis McDonough READ_FEATURE(EndEnumStmt) 25500d0749fSEthan Luis McDonough READ_FEATURE(EndForallStmt) 25600d0749fSEthan Luis McDonough READ_FEATURE(EndFunctionStmt) 25700d0749fSEthan Luis McDonough READ_FEATURE(EndIfStmt) 25800d0749fSEthan Luis McDonough READ_FEATURE(EndInterfaceStmt) 25900d0749fSEthan Luis McDonough READ_FEATURE(EndLabel) 26000d0749fSEthan Luis McDonough READ_FEATURE(EndModuleStmt) 26100d0749fSEthan Luis McDonough READ_FEATURE(EndMpSubprogramStmt) 26200d0749fSEthan Luis McDonough READ_FEATURE(EndProgramStmt) 26300d0749fSEthan Luis McDonough READ_FEATURE(EndSelectStmt) 26400d0749fSEthan Luis McDonough READ_FEATURE(EndSubmoduleStmt) 26500d0749fSEthan Luis McDonough READ_FEATURE(EndSubroutineStmt) 26600d0749fSEthan Luis McDonough READ_FEATURE(EndTypeStmt) 26700d0749fSEthan Luis McDonough READ_FEATURE(EndWhereStmt) 26800d0749fSEthan Luis McDonough READ_FEATURE(EndfileStmt) 26900d0749fSEthan Luis McDonough READ_FEATURE(EntityDecl) 27000d0749fSEthan Luis McDonough READ_FEATURE(EntryStmt) 27100d0749fSEthan Luis McDonough READ_FEATURE(EnumDef) 27200d0749fSEthan Luis McDonough READ_FEATURE(EnumDefStmt) 27300d0749fSEthan Luis McDonough READ_FEATURE(Enumerator) 27400d0749fSEthan Luis McDonough READ_FEATURE(EnumeratorDefStmt) 27500d0749fSEthan Luis McDonough READ_FEATURE(EorLabel) 27600d0749fSEthan Luis McDonough READ_FEATURE(EquivalenceObject) 27700d0749fSEthan Luis McDonough READ_FEATURE(EquivalenceStmt) 27800d0749fSEthan Luis McDonough READ_FEATURE(ErrLabel) 27900d0749fSEthan Luis McDonough READ_FEATURE(ErrorRecovery) 28000d0749fSEthan Luis McDonough READ_FEATURE(EventPostStmt) 28100d0749fSEthan Luis McDonough READ_FEATURE(EventWaitStmt) 282a2d7af75SKatherine Rasmussen READ_FEATURE(EventWaitSpec) 28300d0749fSEthan Luis McDonough READ_FEATURE(ExecutableConstruct) 28400d0749fSEthan Luis McDonough READ_FEATURE(ExecutionPart) 28500d0749fSEthan Luis McDonough READ_FEATURE(ExecutionPartConstruct) 28600d0749fSEthan Luis McDonough READ_FEATURE(ExitStmt) 28700d0749fSEthan Luis McDonough READ_FEATURE(ExplicitCoshapeSpec) 28800d0749fSEthan Luis McDonough READ_FEATURE(ExplicitShapeSpec) 28900d0749fSEthan Luis McDonough READ_FEATURE(Expr) 29000d0749fSEthan Luis McDonough READ_FEATURE(Expr::Parentheses) 29100d0749fSEthan Luis McDonough READ_FEATURE(Expr::UnaryPlus) 29200d0749fSEthan Luis McDonough READ_FEATURE(Expr::Negate) 29300d0749fSEthan Luis McDonough READ_FEATURE(Expr::NOT) 29400d0749fSEthan Luis McDonough READ_FEATURE(Expr::PercentLoc) 29500d0749fSEthan Luis McDonough READ_FEATURE(Expr::DefinedUnary) 29600d0749fSEthan Luis McDonough READ_FEATURE(Expr::Power) 29700d0749fSEthan Luis McDonough READ_FEATURE(Expr::Multiply) 29800d0749fSEthan Luis McDonough READ_FEATURE(Expr::Divide) 29900d0749fSEthan Luis McDonough READ_FEATURE(Expr::Add) 30000d0749fSEthan Luis McDonough READ_FEATURE(Expr::Subtract) 30100d0749fSEthan Luis McDonough READ_FEATURE(Expr::Concat) 30200d0749fSEthan Luis McDonough READ_FEATURE(Expr::LT) 30300d0749fSEthan Luis McDonough READ_FEATURE(Expr::LE) 30400d0749fSEthan Luis McDonough READ_FEATURE(Expr::EQ) 30500d0749fSEthan Luis McDonough READ_FEATURE(Expr::NE) 30600d0749fSEthan Luis McDonough READ_FEATURE(Expr::GE) 30700d0749fSEthan Luis McDonough READ_FEATURE(Expr::GT) 30800d0749fSEthan Luis McDonough READ_FEATURE(Expr::AND) 30900d0749fSEthan Luis McDonough READ_FEATURE(Expr::OR) 31000d0749fSEthan Luis McDonough READ_FEATURE(Expr::EQV) 31100d0749fSEthan Luis McDonough READ_FEATURE(Expr::NEQV) 31200d0749fSEthan Luis McDonough READ_FEATURE(Expr::DefinedBinary) 31300d0749fSEthan Luis McDonough READ_FEATURE(Expr::ComplexConstructor) 31400d0749fSEthan Luis McDonough READ_FEATURE(External) 31500d0749fSEthan Luis McDonough READ_FEATURE(ExternalStmt) 31600d0749fSEthan Luis McDonough READ_FEATURE(FailImageStmt) 31700d0749fSEthan Luis McDonough READ_FEATURE(FileUnitNumber) 31800d0749fSEthan Luis McDonough READ_FEATURE(FinalProcedureStmt) 31900d0749fSEthan Luis McDonough READ_FEATURE(FlushStmt) 32000d0749fSEthan Luis McDonough READ_FEATURE(ForallAssignmentStmt) 32100d0749fSEthan Luis McDonough READ_FEATURE(ForallBodyConstruct) 32200d0749fSEthan Luis McDonough READ_FEATURE(ForallConstruct) 32300d0749fSEthan Luis McDonough READ_FEATURE(ForallConstructStmt) 32400d0749fSEthan Luis McDonough READ_FEATURE(ForallStmt) 32500d0749fSEthan Luis McDonough READ_FEATURE(FormTeamStmt) 32600d0749fSEthan Luis McDonough READ_FEATURE(FormTeamStmt::FormTeamSpec) 32700d0749fSEthan Luis McDonough READ_FEATURE(Format) 32800d0749fSEthan Luis McDonough READ_FEATURE(FormatStmt) 32900d0749fSEthan Luis McDonough READ_FEATURE(FunctionReference) 33000d0749fSEthan Luis McDonough READ_FEATURE(FunctionStmt) 33100d0749fSEthan Luis McDonough READ_FEATURE(FunctionSubprogram) 33200d0749fSEthan Luis McDonough READ_FEATURE(GenericSpec) 33300d0749fSEthan Luis McDonough READ_FEATURE(GenericSpec::Assignment) 33400d0749fSEthan Luis McDonough READ_FEATURE(GenericSpec::ReadFormatted) 33500d0749fSEthan Luis McDonough READ_FEATURE(GenericSpec::ReadUnformatted) 33600d0749fSEthan Luis McDonough READ_FEATURE(GenericSpec::WriteFormatted) 33700d0749fSEthan Luis McDonough READ_FEATURE(GenericSpec::WriteUnformatted) 33800d0749fSEthan Luis McDonough READ_FEATURE(GenericStmt) 33900d0749fSEthan Luis McDonough READ_FEATURE(GotoStmt) 34000d0749fSEthan Luis McDonough READ_FEATURE(HollerithLiteralConstant) 34100d0749fSEthan Luis McDonough READ_FEATURE(IdExpr) 34200d0749fSEthan Luis McDonough READ_FEATURE(IdVariable) 34300d0749fSEthan Luis McDonough READ_FEATURE(IfConstruct) 34400d0749fSEthan Luis McDonough READ_FEATURE(IfConstruct::ElseBlock) 34500d0749fSEthan Luis McDonough READ_FEATURE(IfConstruct::ElseIfBlock) 34600d0749fSEthan Luis McDonough READ_FEATURE(IfStmt) 34700d0749fSEthan Luis McDonough READ_FEATURE(IfThenStmt) 34800d0749fSEthan Luis McDonough READ_FEATURE(TeamValue) 34900d0749fSEthan Luis McDonough READ_FEATURE(ImageSelector) 35000d0749fSEthan Luis McDonough READ_FEATURE(ImageSelectorSpec) 35100d0749fSEthan Luis McDonough READ_FEATURE(ImageSelectorSpec::Stat) 35200d0749fSEthan Luis McDonough READ_FEATURE(ImageSelectorSpec::Team_Number) 35300d0749fSEthan Luis McDonough READ_FEATURE(ImplicitPart) 35400d0749fSEthan Luis McDonough READ_FEATURE(ImplicitPartStmt) 35500d0749fSEthan Luis McDonough READ_FEATURE(ImplicitSpec) 35600d0749fSEthan Luis McDonough READ_FEATURE(ImplicitStmt) 35700d0749fSEthan Luis McDonough READ_FEATURE(ImplicitStmt::ImplicitNoneNameSpec) 35800d0749fSEthan Luis McDonough READ_FEATURE(ImpliedShapeSpec) 35900d0749fSEthan Luis McDonough READ_FEATURE(ImportStmt) 36000d0749fSEthan Luis McDonough READ_FEATURE(Initialization) 36100d0749fSEthan Luis McDonough READ_FEATURE(InputImpliedDo) 36200d0749fSEthan Luis McDonough READ_FEATURE(InputItem) 36300d0749fSEthan Luis McDonough READ_FEATURE(InquireSpec) 36400d0749fSEthan Luis McDonough READ_FEATURE(InquireSpec::CharVar) 36500d0749fSEthan Luis McDonough READ_FEATURE(InquireSpec::CharVar::Kind) 36600d0749fSEthan Luis McDonough READ_FEATURE(InquireSpec::IntVar) 36700d0749fSEthan Luis McDonough READ_FEATURE(InquireSpec::IntVar::Kind) 36800d0749fSEthan Luis McDonough READ_FEATURE(InquireSpec::LogVar) 36900d0749fSEthan Luis McDonough READ_FEATURE(InquireSpec::LogVar::Kind) 37000d0749fSEthan Luis McDonough READ_FEATURE(InquireStmt) 37100d0749fSEthan Luis McDonough READ_FEATURE(InquireStmt::Iolength) 37200d0749fSEthan Luis McDonough READ_FEATURE(IntegerTypeSpec) 37300d0749fSEthan Luis McDonough READ_FEATURE(IntentSpec) 37400d0749fSEthan Luis McDonough READ_FEATURE(IntentSpec::Intent) 37500d0749fSEthan Luis McDonough READ_FEATURE(IntentStmt) 37600d0749fSEthan Luis McDonough READ_FEATURE(InterfaceBlock) 37700d0749fSEthan Luis McDonough READ_FEATURE(InterfaceBody) 37800d0749fSEthan Luis McDonough READ_FEATURE(InterfaceBody::Function) 37900d0749fSEthan Luis McDonough READ_FEATURE(InterfaceBody::Subroutine) 38000d0749fSEthan Luis McDonough READ_FEATURE(InterfaceSpecification) 38100d0749fSEthan Luis McDonough READ_FEATURE(InterfaceStmt) 38200d0749fSEthan Luis McDonough READ_FEATURE(InternalSubprogram) 38300d0749fSEthan Luis McDonough READ_FEATURE(InternalSubprogramPart) 38400d0749fSEthan Luis McDonough READ_FEATURE(Intrinsic) 38500d0749fSEthan Luis McDonough READ_FEATURE(IntrinsicStmt) 38600d0749fSEthan Luis McDonough READ_FEATURE(IntrinsicTypeSpec) 38700d0749fSEthan Luis McDonough READ_FEATURE(IntrinsicTypeSpec::Character) 38800d0749fSEthan Luis McDonough READ_FEATURE(IntrinsicTypeSpec::Complex) 38900d0749fSEthan Luis McDonough READ_FEATURE(IntrinsicTypeSpec::DoubleComplex) 39000d0749fSEthan Luis McDonough READ_FEATURE(IntrinsicTypeSpec::DoublePrecision) 39100d0749fSEthan Luis McDonough READ_FEATURE(IntrinsicTypeSpec::Logical) 39200d0749fSEthan Luis McDonough READ_FEATURE(IntrinsicTypeSpec::Real) 39300d0749fSEthan Luis McDonough READ_FEATURE(IoControlSpec) 39400d0749fSEthan Luis McDonough READ_FEATURE(IoControlSpec::Asynchronous) 39500d0749fSEthan Luis McDonough READ_FEATURE(IoControlSpec::CharExpr) 39600d0749fSEthan Luis McDonough READ_FEATURE(IoControlSpec::CharExpr::Kind) 39700d0749fSEthan Luis McDonough READ_FEATURE(IoControlSpec::Pos) 39800d0749fSEthan Luis McDonough READ_FEATURE(IoControlSpec::Rec) 39900d0749fSEthan Luis McDonough READ_FEATURE(IoControlSpec::Size) 40000d0749fSEthan Luis McDonough READ_FEATURE(IoUnit) 40100d0749fSEthan Luis McDonough READ_FEATURE(Keyword) 40200d0749fSEthan Luis McDonough READ_FEATURE(KindParam) 40300d0749fSEthan Luis McDonough READ_FEATURE(KindSelector) 40400d0749fSEthan Luis McDonough READ_FEATURE(KindSelector::StarSize) 40500d0749fSEthan Luis McDonough READ_FEATURE(LabelDoStmt) 40600d0749fSEthan Luis McDonough READ_FEATURE(LanguageBindingSpec) 40700d0749fSEthan Luis McDonough READ_FEATURE(LengthSelector) 40800d0749fSEthan Luis McDonough READ_FEATURE(LetterSpec) 40900d0749fSEthan Luis McDonough READ_FEATURE(LiteralConstant) 41000d0749fSEthan Luis McDonough READ_FEATURE(IntLiteralConstant) 4113af717d6Skhaki3 READ_FEATURE(ReductionOperator) 4123af717d6Skhaki3 READ_FEATURE(ReductionOperator::Operator) 41300d0749fSEthan Luis McDonough READ_FEATURE(LocalitySpec) 41400d0749fSEthan Luis McDonough READ_FEATURE(LocalitySpec::DefaultNone) 41500d0749fSEthan Luis McDonough READ_FEATURE(LocalitySpec::Local) 41600d0749fSEthan Luis McDonough READ_FEATURE(LocalitySpec::LocalInit) 4173af717d6Skhaki3 READ_FEATURE(LocalitySpec::Reduce) 41800d0749fSEthan Luis McDonough READ_FEATURE(LocalitySpec::Shared) 41900d0749fSEthan Luis McDonough READ_FEATURE(LockStmt) 42000d0749fSEthan Luis McDonough READ_FEATURE(LockStmt::LockStat) 42100d0749fSEthan Luis McDonough READ_FEATURE(LogicalLiteralConstant) 42200d0749fSEthan Luis McDonough READ_FEATURE(LoopControl) 42300d0749fSEthan Luis McDonough READ_FEATURE(LoopControl::Concurrent) 42400d0749fSEthan Luis McDonough READ_FEATURE(MainProgram) 42500d0749fSEthan Luis McDonough READ_FEATURE(Map) 42600d0749fSEthan Luis McDonough READ_FEATURE(Map::EndMapStmt) 42700d0749fSEthan Luis McDonough READ_FEATURE(Map::MapStmt) 42800d0749fSEthan Luis McDonough READ_FEATURE(MaskedElsewhereStmt) 42900d0749fSEthan Luis McDonough READ_FEATURE(Module) 43000d0749fSEthan Luis McDonough READ_FEATURE(ModuleStmt) 43100d0749fSEthan Luis McDonough READ_FEATURE(ModuleSubprogram) 43200d0749fSEthan Luis McDonough READ_FEATURE(ModuleSubprogramPart) 43300d0749fSEthan Luis McDonough READ_FEATURE(MpSubprogramStmt) 43400d0749fSEthan Luis McDonough READ_FEATURE(MsgVariable) 43500d0749fSEthan Luis McDonough READ_FEATURE(Name) 43600d0749fSEthan Luis McDonough READ_FEATURE(NamedConstant) 43700d0749fSEthan Luis McDonough READ_FEATURE(NamedConstantDef) 43800d0749fSEthan Luis McDonough READ_FEATURE(NamelistStmt) 43900d0749fSEthan Luis McDonough READ_FEATURE(NamelistStmt::Group) 44000d0749fSEthan Luis McDonough READ_FEATURE(NonLabelDoStmt) 44100d0749fSEthan Luis McDonough READ_FEATURE(NoPass) 442a2d7af75SKatherine Rasmussen READ_FEATURE(NotifyWaitStmt) 44300d0749fSEthan Luis McDonough READ_FEATURE(NullifyStmt) 44400d0749fSEthan Luis McDonough READ_FEATURE(NullInit) 44500d0749fSEthan Luis McDonough READ_FEATURE(ObjectDecl) 44600d0749fSEthan Luis McDonough READ_FEATURE(OldParameterStmt) 44700d0749fSEthan Luis McDonough READ_FEATURE(OmpAlignedClause) 44800d0749fSEthan Luis McDonough READ_FEATURE(OmpAtomic) 44900d0749fSEthan Luis McDonough READ_FEATURE(OmpAtomicCapture) 45000d0749fSEthan Luis McDonough READ_FEATURE(OmpAtomicCapture::Stmt1) 45100d0749fSEthan Luis McDonough READ_FEATURE(OmpAtomicCapture::Stmt2) 45200d0749fSEthan Luis McDonough READ_FEATURE(OmpAtomicRead) 45300d0749fSEthan Luis McDonough READ_FEATURE(OmpAtomicUpdate) 45400d0749fSEthan Luis McDonough READ_FEATURE(OmpAtomicWrite) 45500d0749fSEthan Luis McDonough READ_FEATURE(OmpBeginBlockDirective) 45600d0749fSEthan Luis McDonough READ_FEATURE(OmpBeginLoopDirective) 45700d0749fSEthan Luis McDonough READ_FEATURE(OmpBeginSectionsDirective) 45800d0749fSEthan Luis McDonough READ_FEATURE(OmpBlockDirective) 45900d0749fSEthan Luis McDonough READ_FEATURE(OmpCancelType) 46000d0749fSEthan Luis McDonough READ_FEATURE(OmpCancelType::Type) 46100d0749fSEthan Luis McDonough READ_FEATURE(OmpClause) 46200d0749fSEthan Luis McDonough READ_FEATURE(OmpClauseList) 46300d0749fSEthan Luis McDonough READ_FEATURE(OmpCriticalDirective) 46400d0749fSEthan Luis McDonough READ_FEATURE(OmpDeclareTargetSpecifier) 46500d0749fSEthan Luis McDonough READ_FEATURE(OmpDeclareTargetWithClause) 46600d0749fSEthan Luis McDonough READ_FEATURE(OmpDeclareTargetWithList) 46700d0749fSEthan Luis McDonough READ_FEATURE(OmpDefaultClause) 468608f4ae1SKrzysztof Parzyszek READ_FEATURE(OmpDefaultClause::DataSharingAttribute) 46900d0749fSEthan Luis McDonough READ_FEATURE(OmpDefaultmapClause) 47000d0749fSEthan Luis McDonough READ_FEATURE(OmpDefaultmapClause::ImplicitBehavior) 4714fc1141eSKrzysztof Parzyszek READ_FEATURE(OmpVariableCategory::Value) 47200d0749fSEthan Luis McDonough READ_FEATURE(OmpDependClause) 473f87737f3SKrzysztof Parzyszek READ_FEATURE(OmpDependClause::TaskDep) 474f87737f3SKrzysztof Parzyszek READ_FEATURE(OmpDoacross::Sink) 475f87737f3SKrzysztof Parzyszek READ_FEATURE(OmpDoacross::Source) 476f87737f3SKrzysztof Parzyszek READ_FEATURE(OmpDoacrossClause) 477f87737f3SKrzysztof Parzyszek READ_FEATURE(OmpDependenceType) 478cfd67c21SKrzysztof Parzyszek READ_FEATURE(OmpDependenceType::Value) 47909a4bcf1SKrzysztof Parzyszek READ_FEATURE(OmpTaskDependenceType) 480cfd67c21SKrzysztof Parzyszek READ_FEATURE(OmpTaskDependenceType::Value) 481f87737f3SKrzysztof Parzyszek READ_FEATURE(OmpIteration) 482f87737f3SKrzysztof Parzyszek READ_FEATURE(OmpIterationOffset) 483f87737f3SKrzysztof Parzyszek READ_FEATURE(OmpIterationVector) 4846311ab21SEthan Luis McDonough READ_FEATURE(OmpEndAllocators) 48500d0749fSEthan Luis McDonough READ_FEATURE(OmpEndAtomic) 48600d0749fSEthan Luis McDonough READ_FEATURE(OmpEndBlockDirective) 48700d0749fSEthan Luis McDonough READ_FEATURE(OmpEndCriticalDirective) 48800d0749fSEthan Luis McDonough READ_FEATURE(OmpEndLoopDirective) 48900d0749fSEthan Luis McDonough READ_FEATURE(OmpEndSectionsDirective) 4905621929fSKiran Chandramohan READ_FEATURE(OmpGrainsizeClause) 491bde79c0eSKrzysztof Parzyszek READ_FEATURE(OmpGrainsizeClause::Modifier) 492bde79c0eSKrzysztof Parzyszek READ_FEATURE(OmpPrescriptiveness) 493bde79c0eSKrzysztof Parzyszek READ_FEATURE(OmpPrescriptiveness::Value) 49400d0749fSEthan Luis McDonough READ_FEATURE(OmpIfClause) 49533faa828SKrzysztof Parzyszek READ_FEATURE(OmpIfClause::Modifier) 49633faa828SKrzysztof Parzyszek READ_FEATURE(OmpDirectiveNameModifier) 49700d0749fSEthan Luis McDonough READ_FEATURE(OmpLinearClause) 498*03cbe426SKrzysztof Parzyszek READ_FEATURE(OmpLinearClause::Modifier) 49900d0749fSEthan Luis McDonough READ_FEATURE(OmpLinearModifier) 500cfd67c21SKrzysztof Parzyszek READ_FEATURE(OmpLinearModifier::Value) 50100d0749fSEthan Luis McDonough READ_FEATURE(OmpLoopDirective) 50200d0749fSEthan Luis McDonough READ_FEATURE(OmpMapClause) 50352755ac2SKrzysztof Parzyszek READ_FEATURE(OmpMapClause::Modifier) 5045621929fSKiran Chandramohan READ_FEATURE(OmpNumTasksClause) 505bde79c0eSKrzysztof Parzyszek READ_FEATURE(OmpNumTasksClause::Modifier) 50600d0749fSEthan Luis McDonough READ_FEATURE(OmpObject) 50700d0749fSEthan Luis McDonough READ_FEATURE(OmpObjectList) 50800d0749fSEthan Luis McDonough READ_FEATURE(OmpOrderClause) 509e79cd246SKrzysztof Parzyszek READ_FEATURE(OmpOrderClause::Ordering) 51000d0749fSEthan Luis McDonough READ_FEATURE(OmpOrderModifier) 511e79cd246SKrzysztof Parzyszek READ_FEATURE(OmpOrderModifier::Value) 51200d0749fSEthan Luis McDonough READ_FEATURE(OmpProcBindClause) 513608f4ae1SKrzysztof Parzyszek READ_FEATURE(OmpProcBindClause::AffinityPolicy) 51400d0749fSEthan Luis McDonough READ_FEATURE(OmpReductionClause) 51500d0749fSEthan Luis McDonough READ_FEATURE(OmpInReductionClause) 51600d0749fSEthan Luis McDonough READ_FEATURE(OmpReductionCombiner) 51700d0749fSEthan Luis McDonough READ_FEATURE(OmpReductionCombiner::FunctionCombiner) 51800d0749fSEthan Luis McDonough READ_FEATURE(OmpReductionInitializerClause) 519cfd67c21SKrzysztof Parzyszek READ_FEATURE(OmpReductionIdentifier) 52000d0749fSEthan Luis McDonough READ_FEATURE(OmpAllocateClause) 521cdbd2287SKrzysztof Parzyszek READ_FEATURE(OmpAllocateClause::Modifier) 522cdbd2287SKrzysztof Parzyszek READ_FEATURE(OmpAllocatorSimpleModifier) 523cdbd2287SKrzysztof Parzyszek READ_FEATURE(OmpAllocatorComplexModifier) 524cdbd2287SKrzysztof Parzyszek READ_FEATURE(OmpAlignModifier) 52500d0749fSEthan Luis McDonough READ_FEATURE(OmpScheduleClause) 526e79cd246SKrzysztof Parzyszek READ_FEATURE(OmpScheduleClause::Kind) 527e79cd246SKrzysztof Parzyszek READ_FEATURE(OmpScheduleClause::Modifier) 52805096590SKrzysztof Parzyszek READ_FEATURE(OmpDeviceModifier) 52900d0749fSEthan Luis McDonough READ_FEATURE(OmpDeviceClause) 53005096590SKrzysztof Parzyszek READ_FEATURE(OmpDeviceClause::Modifier) 53100d0749fSEthan Luis McDonough READ_FEATURE(OmpDeviceTypeClause) 532608f4ae1SKrzysztof Parzyszek READ_FEATURE(OmpDeviceTypeClause::DeviceTypeDescription) 533e79cd246SKrzysztof Parzyszek READ_FEATURE(OmpChunkModifier) 534e79cd246SKrzysztof Parzyszek READ_FEATURE(OmpChunkModifier::Value) 535e79cd246SKrzysztof Parzyszek READ_FEATURE(OmpOrderingModifier) 536e79cd246SKrzysztof Parzyszek READ_FEATURE(OmpOrderingModifier::Value) 53700d0749fSEthan Luis McDonough READ_FEATURE(OmpSectionBlocks) 53800d0749fSEthan Luis McDonough READ_FEATURE(OmpSectionsDirective) 53900d0749fSEthan Luis McDonough READ_FEATURE(OmpSimpleStandaloneDirective) 54000d0749fSEthan Luis McDonough READ_FEATURE(Only) 54100d0749fSEthan Luis McDonough READ_FEATURE(OpenACCAtomicConstruct) 54200d0749fSEthan Luis McDonough READ_FEATURE(OpenACCBlockConstruct) 54300d0749fSEthan Luis McDonough READ_FEATURE(OpenACCCacheConstruct) 54400d0749fSEthan Luis McDonough READ_FEATURE(OpenACCCombinedConstruct) 54500d0749fSEthan Luis McDonough READ_FEATURE(OpenACCConstruct) 54600d0749fSEthan Luis McDonough READ_FEATURE(OpenACCDeclarativeConstruct) 54700d0749fSEthan Luis McDonough READ_FEATURE(OpenACCLoopConstruct) 54800d0749fSEthan Luis McDonough READ_FEATURE(OpenACCRoutineConstruct) 54900d0749fSEthan Luis McDonough READ_FEATURE(OpenACCStandaloneDeclarativeConstruct) 55000d0749fSEthan Luis McDonough READ_FEATURE(OpenACCStandaloneConstruct) 55100d0749fSEthan Luis McDonough READ_FEATURE(OpenACCWaitConstruct) 55200d0749fSEthan Luis McDonough READ_FEATURE(OpenMPAtomicConstruct) 55300d0749fSEthan Luis McDonough READ_FEATURE(OpenMPBlockConstruct) 55400d0749fSEthan Luis McDonough READ_FEATURE(OpenMPCancelConstruct) 55500d0749fSEthan Luis McDonough READ_FEATURE(OpenMPCancelConstruct::If) 55600d0749fSEthan Luis McDonough READ_FEATURE(OpenMPCancellationPointConstruct) 55700d0749fSEthan Luis McDonough READ_FEATURE(OpenMPConstruct) 55800d0749fSEthan Luis McDonough READ_FEATURE(OpenMPCriticalConstruct) 55900d0749fSEthan Luis McDonough READ_FEATURE(OpenMPDeclarativeAllocate) 56000d0749fSEthan Luis McDonough READ_FEATURE(OpenMPDeclarativeConstruct) 56100d0749fSEthan Luis McDonough READ_FEATURE(OpenMPDeclareReductionConstruct) 56200d0749fSEthan Luis McDonough READ_FEATURE(OpenMPDeclareSimdConstruct) 56300d0749fSEthan Luis McDonough READ_FEATURE(OpenMPDeclareTargetConstruct) 56400d0749fSEthan Luis McDonough READ_FEATURE(OmpMemoryOrderClause) 56500d0749fSEthan Luis McDonough READ_FEATURE(OmpAtomicClause) 56600d0749fSEthan Luis McDonough READ_FEATURE(OmpAtomicClauseList) 56700d0749fSEthan Luis McDonough READ_FEATURE(OmpAtomicDefaultMemOrderClause) 568edc2fb07SSergio Afonso READ_FEATURE(OmpAtomicDefaultMemOrderType) 56900d0749fSEthan Luis McDonough READ_FEATURE(OpenMPFlushConstruct) 57000d0749fSEthan Luis McDonough READ_FEATURE(OpenMPLoopConstruct) 57100d0749fSEthan Luis McDonough READ_FEATURE(OpenMPExecutableAllocate) 5726311ab21SEthan Luis McDonough READ_FEATURE(OpenMPAllocatorsConstruct) 57300d0749fSEthan Luis McDonough READ_FEATURE(OpenMPRequiresConstruct) 57400d0749fSEthan Luis McDonough READ_FEATURE(OpenMPSimpleStandaloneConstruct) 57500d0749fSEthan Luis McDonough READ_FEATURE(OpenMPStandaloneConstruct) 57600d0749fSEthan Luis McDonough READ_FEATURE(OpenMPSectionConstruct) 57700d0749fSEthan Luis McDonough READ_FEATURE(OpenMPSectionsConstruct) 57800d0749fSEthan Luis McDonough READ_FEATURE(OpenMPThreadprivate) 57900d0749fSEthan Luis McDonough READ_FEATURE(OpenStmt) 58000d0749fSEthan Luis McDonough READ_FEATURE(Optional) 58100d0749fSEthan Luis McDonough READ_FEATURE(OptionalStmt) 58200d0749fSEthan Luis McDonough READ_FEATURE(OtherSpecificationStmt) 58300d0749fSEthan Luis McDonough READ_FEATURE(OutputImpliedDo) 58400d0749fSEthan Luis McDonough READ_FEATURE(OutputItem) 58500d0749fSEthan Luis McDonough READ_FEATURE(Parameter) 58600d0749fSEthan Luis McDonough READ_FEATURE(ParameterStmt) 58700d0749fSEthan Luis McDonough READ_FEATURE(ParentIdentifier) 58800d0749fSEthan Luis McDonough READ_FEATURE(Pass) 58900d0749fSEthan Luis McDonough READ_FEATURE(PauseStmt) 59000d0749fSEthan Luis McDonough READ_FEATURE(Pointer) 59100d0749fSEthan Luis McDonough READ_FEATURE(PointerAssignmentStmt) 59200d0749fSEthan Luis McDonough READ_FEATURE(PointerAssignmentStmt::Bounds) 59300d0749fSEthan Luis McDonough READ_FEATURE(PointerDecl) 59400d0749fSEthan Luis McDonough READ_FEATURE(PointerObject) 59500d0749fSEthan Luis McDonough READ_FEATURE(PointerStmt) 59600d0749fSEthan Luis McDonough READ_FEATURE(PositionOrFlushSpec) 59700d0749fSEthan Luis McDonough READ_FEATURE(PrefixSpec) 59800d0749fSEthan Luis McDonough READ_FEATURE(PrefixSpec::Elemental) 59900d0749fSEthan Luis McDonough READ_FEATURE(PrefixSpec::Impure) 60000d0749fSEthan Luis McDonough READ_FEATURE(PrefixSpec::Module) 60100d0749fSEthan Luis McDonough READ_FEATURE(PrefixSpec::Non_Recursive) 60200d0749fSEthan Luis McDonough READ_FEATURE(PrefixSpec::Pure) 60300d0749fSEthan Luis McDonough READ_FEATURE(PrefixSpec::Recursive) 60400d0749fSEthan Luis McDonough READ_FEATURE(PrintStmt) 60500d0749fSEthan Luis McDonough READ_FEATURE(PrivateStmt) 60600d0749fSEthan Luis McDonough READ_FEATURE(PrivateOrSequence) 60700d0749fSEthan Luis McDonough READ_FEATURE(ProcAttrSpec) 60800d0749fSEthan Luis McDonough READ_FEATURE(ProcComponentAttrSpec) 60900d0749fSEthan Luis McDonough READ_FEATURE(ProcComponentDefStmt) 61000d0749fSEthan Luis McDonough READ_FEATURE(ProcComponentRef) 61100d0749fSEthan Luis McDonough READ_FEATURE(ProcDecl) 61200d0749fSEthan Luis McDonough READ_FEATURE(ProcInterface) 61300d0749fSEthan Luis McDonough READ_FEATURE(ProcPointerInit) 61400d0749fSEthan Luis McDonough READ_FEATURE(ProcedureDeclarationStmt) 61500d0749fSEthan Luis McDonough READ_FEATURE(ProcedureDesignator) 61600d0749fSEthan Luis McDonough READ_FEATURE(ProcedureStmt) 61700d0749fSEthan Luis McDonough READ_FEATURE(ProcedureStmt::Kind) 61800d0749fSEthan Luis McDonough READ_FEATURE(Program) 61900d0749fSEthan Luis McDonough READ_FEATURE(ProgramStmt) 62000d0749fSEthan Luis McDonough READ_FEATURE(ProgramUnit) 62100d0749fSEthan Luis McDonough READ_FEATURE(Protected) 62200d0749fSEthan Luis McDonough READ_FEATURE(ProtectedStmt) 62300d0749fSEthan Luis McDonough READ_FEATURE(ReadStmt) 62400d0749fSEthan Luis McDonough READ_FEATURE(RealLiteralConstant) 62500d0749fSEthan Luis McDonough READ_FEATURE(RealLiteralConstant::Real) 62600d0749fSEthan Luis McDonough READ_FEATURE(Rename) 62700d0749fSEthan Luis McDonough READ_FEATURE(Rename::Names) 62800d0749fSEthan Luis McDonough READ_FEATURE(Rename::Operators) 62900d0749fSEthan Luis McDonough READ_FEATURE(ReturnStmt) 63000d0749fSEthan Luis McDonough READ_FEATURE(RewindStmt) 63100d0749fSEthan Luis McDonough READ_FEATURE(Save) 63200d0749fSEthan Luis McDonough READ_FEATURE(SaveStmt) 63300d0749fSEthan Luis McDonough READ_FEATURE(SavedEntity) 63400d0749fSEthan Luis McDonough READ_FEATURE(SavedEntity::Kind) 63500d0749fSEthan Luis McDonough READ_FEATURE(SectionSubscript) 63600d0749fSEthan Luis McDonough READ_FEATURE(SelectCaseStmt) 63700d0749fSEthan Luis McDonough READ_FEATURE(SelectRankCaseStmt) 63800d0749fSEthan Luis McDonough READ_FEATURE(SelectRankCaseStmt::Rank) 63900d0749fSEthan Luis McDonough READ_FEATURE(SelectRankConstruct) 64000d0749fSEthan Luis McDonough READ_FEATURE(SelectRankConstruct::RankCase) 64100d0749fSEthan Luis McDonough READ_FEATURE(SelectRankStmt) 64200d0749fSEthan Luis McDonough READ_FEATURE(SelectTypeConstruct) 64300d0749fSEthan Luis McDonough READ_FEATURE(SelectTypeConstruct::TypeCase) 64400d0749fSEthan Luis McDonough READ_FEATURE(SelectTypeStmt) 64500d0749fSEthan Luis McDonough READ_FEATURE(Selector) 64600d0749fSEthan Luis McDonough READ_FEATURE(SeparateModuleSubprogram) 64700d0749fSEthan Luis McDonough READ_FEATURE(SequenceStmt) 64800d0749fSEthan Luis McDonough READ_FEATURE(Sign) 64900d0749fSEthan Luis McDonough READ_FEATURE(SignedComplexLiteralConstant) 65000d0749fSEthan Luis McDonough READ_FEATURE(SignedIntLiteralConstant) 65100d0749fSEthan Luis McDonough READ_FEATURE(SignedRealLiteralConstant) 65200d0749fSEthan Luis McDonough READ_FEATURE(SpecificationConstruct) 65300d0749fSEthan Luis McDonough READ_FEATURE(SpecificationExpr) 65400d0749fSEthan Luis McDonough READ_FEATURE(SpecificationPart) 65500d0749fSEthan Luis McDonough READ_FEATURE(Star) 65600d0749fSEthan Luis McDonough READ_FEATURE(StatOrErrmsg) 65700d0749fSEthan Luis McDonough READ_FEATURE(StatVariable) 65800d0749fSEthan Luis McDonough READ_FEATURE(StatusExpr) 65900d0749fSEthan Luis McDonough READ_FEATURE(StmtFunctionStmt) 66000d0749fSEthan Luis McDonough READ_FEATURE(StopCode) 66100d0749fSEthan Luis McDonough READ_FEATURE(StopStmt) 66200d0749fSEthan Luis McDonough READ_FEATURE(StopStmt::Kind) 66300d0749fSEthan Luis McDonough READ_FEATURE(StructureComponent) 66400d0749fSEthan Luis McDonough READ_FEATURE(StructureConstructor) 66500d0749fSEthan Luis McDonough READ_FEATURE(StructureDef) 66600d0749fSEthan Luis McDonough READ_FEATURE(StructureDef::EndStructureStmt) 66700d0749fSEthan Luis McDonough READ_FEATURE(StructureField) 66800d0749fSEthan Luis McDonough READ_FEATURE(StructureStmt) 66900d0749fSEthan Luis McDonough READ_FEATURE(Submodule) 67000d0749fSEthan Luis McDonough READ_FEATURE(SubmoduleStmt) 67100d0749fSEthan Luis McDonough READ_FEATURE(SubroutineStmt) 67200d0749fSEthan Luis McDonough READ_FEATURE(SubroutineSubprogram) 67300d0749fSEthan Luis McDonough READ_FEATURE(SubscriptTriplet) 67400d0749fSEthan Luis McDonough READ_FEATURE(Substring) 67500d0749fSEthan Luis McDonough READ_FEATURE(SubstringInquiry) 67600d0749fSEthan Luis McDonough READ_FEATURE(SubstringRange) 67700d0749fSEthan Luis McDonough READ_FEATURE(Suffix) 67800d0749fSEthan Luis McDonough READ_FEATURE(SyncAllStmt) 67900d0749fSEthan Luis McDonough READ_FEATURE(SyncImagesStmt) 68000d0749fSEthan Luis McDonough READ_FEATURE(SyncImagesStmt::ImageSet) 68100d0749fSEthan Luis McDonough READ_FEATURE(SyncMemoryStmt) 68200d0749fSEthan Luis McDonough READ_FEATURE(SyncTeamStmt) 68300d0749fSEthan Luis McDonough READ_FEATURE(Target) 68400d0749fSEthan Luis McDonough READ_FEATURE(TargetStmt) 68500d0749fSEthan Luis McDonough READ_FEATURE(TypeAttrSpec) 68600d0749fSEthan Luis McDonough READ_FEATURE(TypeAttrSpec::BindC) 68700d0749fSEthan Luis McDonough READ_FEATURE(TypeAttrSpec::Extends) 68800d0749fSEthan Luis McDonough READ_FEATURE(TypeBoundGenericStmt) 68900d0749fSEthan Luis McDonough READ_FEATURE(TypeBoundProcBinding) 69000d0749fSEthan Luis McDonough READ_FEATURE(TypeBoundProcDecl) 69100d0749fSEthan Luis McDonough READ_FEATURE(TypeBoundProcedurePart) 69200d0749fSEthan Luis McDonough READ_FEATURE(TypeBoundProcedureStmt) 69300d0749fSEthan Luis McDonough READ_FEATURE(TypeBoundProcedureStmt::WithInterface) 69400d0749fSEthan Luis McDonough READ_FEATURE(TypeBoundProcedureStmt::WithoutInterface) 69500d0749fSEthan Luis McDonough READ_FEATURE(TypeDeclarationStmt) 69600d0749fSEthan Luis McDonough READ_FEATURE(TypeGuardStmt) 69700d0749fSEthan Luis McDonough READ_FEATURE(TypeGuardStmt::Guard) 69800d0749fSEthan Luis McDonough READ_FEATURE(TypeParamDecl) 69900d0749fSEthan Luis McDonough READ_FEATURE(TypeParamDefStmt) 70000d0749fSEthan Luis McDonough READ_FEATURE(common::TypeParamAttr) 70100d0749fSEthan Luis McDonough READ_FEATURE(TypeParamSpec) 70200d0749fSEthan Luis McDonough READ_FEATURE(TypeParamValue) 70300d0749fSEthan Luis McDonough READ_FEATURE(TypeParamValue::Deferred) 70400d0749fSEthan Luis McDonough READ_FEATURE(TypeSpec) 70500d0749fSEthan Luis McDonough READ_FEATURE(Union) 70600d0749fSEthan Luis McDonough READ_FEATURE(Union::EndUnionStmt) 70700d0749fSEthan Luis McDonough READ_FEATURE(Union::UnionStmt) 70800d0749fSEthan Luis McDonough READ_FEATURE(UnlockStmt) 70900d0749fSEthan Luis McDonough READ_FEATURE(UseStmt) 71000d0749fSEthan Luis McDonough READ_FEATURE(UseStmt::ModuleNature) 71100d0749fSEthan Luis McDonough READ_FEATURE(Value) 71200d0749fSEthan Luis McDonough READ_FEATURE(ValueStmt) 71300d0749fSEthan Luis McDonough READ_FEATURE(Variable) 71400d0749fSEthan Luis McDonough READ_FEATURE(Verbatim) 71500d0749fSEthan Luis McDonough READ_FEATURE(Volatile) 71600d0749fSEthan Luis McDonough READ_FEATURE(VolatileStmt) 71700d0749fSEthan Luis McDonough READ_FEATURE(WaitSpec) 71800d0749fSEthan Luis McDonough READ_FEATURE(WaitStmt) 71900d0749fSEthan Luis McDonough READ_FEATURE(WhereBodyConstruct) 72000d0749fSEthan Luis McDonough READ_FEATURE(WhereConstruct) 72100d0749fSEthan Luis McDonough READ_FEATURE(WhereConstruct::Elsewhere) 72200d0749fSEthan Luis McDonough READ_FEATURE(WhereConstruct::MaskedElsewhere) 72300d0749fSEthan Luis McDonough READ_FEATURE(WhereConstructStmt) 72400d0749fSEthan Luis McDonough READ_FEATURE(WhereStmt) 72500d0749fSEthan Luis McDonough READ_FEATURE(WriteStmt) 72600d0749fSEthan Luis McDonough 72700d0749fSEthan Luis McDonough READ_FEATURE(llvm::omp::Directive) 72800d0749fSEthan Luis McDonough READ_FEATURE(llvm::omp::Clause) 72900d0749fSEthan Luis McDonough READ_FEATURE(llvm::acc::Directive) 73000d0749fSEthan Luis McDonough READ_FEATURE(llvm::acc::DefaultValue) 73100d0749fSEthan Luis McDonough 73200d0749fSEthan Luis McDonough template <typename A> bool Pre(const A &) { return true; } 73300d0749fSEthan Luis McDonough template <typename A> void Post(const A &) {} 73400d0749fSEthan Luis McDonough 73500d0749fSEthan Luis McDonough template <typename T> bool Pre(const Statement<T> &) { return true; } 73600d0749fSEthan Luis McDonough template <typename T> void Post(const Statement<T> &) {} 73700d0749fSEthan Luis McDonough 73800d0749fSEthan Luis McDonough template <typename T> bool Pre(const UnlabeledStatement<T> &) { return true; } 73900d0749fSEthan Luis McDonough template <typename T> void Post(const UnlabeledStatement<T> &) {} 74000d0749fSEthan Luis McDonough 74100d0749fSEthan Luis McDonough template <typename T> bool Pre(const common::Indirection<T> &) { 74200d0749fSEthan Luis McDonough return true; 74300d0749fSEthan Luis McDonough } 74400d0749fSEthan Luis McDonough template <typename T> void Post(const common::Indirection<T> &) {} 74500d0749fSEthan Luis McDonough 74600d0749fSEthan Luis McDonough template <typename A> bool Pre(const Scalar<A> &) { return true; } 74700d0749fSEthan Luis McDonough template <typename A> void Post(const Scalar<A> &) {} 74800d0749fSEthan Luis McDonough 74900d0749fSEthan Luis McDonough template <typename A> bool Pre(const Constant<A> &) { return true; } 75000d0749fSEthan Luis McDonough template <typename A> void Post(const Constant<A> &) {} 75100d0749fSEthan Luis McDonough 75200d0749fSEthan Luis McDonough template <typename A> bool Pre(const Integer<A> &) { return true; } 75300d0749fSEthan Luis McDonough template <typename A> void Post(const Integer<A> &) {} 75400d0749fSEthan Luis McDonough 75500d0749fSEthan Luis McDonough template <typename A> bool Pre(const Logical<A> &) { return true; } 75600d0749fSEthan Luis McDonough template <typename A> void Post(const Logical<A> &) {} 75700d0749fSEthan Luis McDonough 75800d0749fSEthan Luis McDonough template <typename A> bool Pre(const DefaultChar<A> &) { return true; } 75900d0749fSEthan Luis McDonough template <typename A> void Post(const DefaultChar<A> &) {} 76000d0749fSEthan Luis McDonough 76100d0749fSEthan Luis McDonough template <typename... A> bool Pre(const std::tuple<A...> &) { return true; } 76200d0749fSEthan Luis McDonough template <typename... A> void Post(const std::tuple<A...> &) {} 76300d0749fSEthan Luis McDonough 76400d0749fSEthan Luis McDonough template <typename... A> bool Pre(const std::variant<A...> &) { return true; } 76500d0749fSEthan Luis McDonough template <typename... A> void Post(const std::variant<A...> &) {} 76600d0749fSEthan Luis McDonough }; 76700d0749fSEthan Luis McDonough 76800d0749fSEthan Luis McDonough bool sortNodes(std::pair<const char *, int> a, std::pair<const char *, int> b) { 76900d0749fSEthan Luis McDonough return (a.second == b.second) ? (std::strcmp(a.first, b.first) < 0) 77000d0749fSEthan Luis McDonough : a.second > b.second; 77100d0749fSEthan Luis McDonough } 77200d0749fSEthan Luis McDonough 77300d0749fSEthan Luis McDonough class FeatureListAction : public PluginParseTreeAction { 77400d0749fSEthan Luis McDonough void executeAction() override { 77500d0749fSEthan Luis McDonough NodeVisitor visitor; 77600d0749fSEthan Luis McDonough Fortran::parser::Walk(getParsing().parseTree(), visitor); 77700d0749fSEthan Luis McDonough 77800d0749fSEthan Luis McDonough const auto &frequencyMap = visitor.getFrequencies(); 77900d0749fSEthan Luis McDonough std::vector<std::pair<const char *, int>> frequencies( 78000d0749fSEthan Luis McDonough frequencyMap.begin(), frequencyMap.end()); 78100d0749fSEthan Luis McDonough 78200d0749fSEthan Luis McDonough std::sort(frequencies.begin(), frequencies.end(), sortNodes); 78300d0749fSEthan Luis McDonough for (auto const &[feature, frequency] : frequencies) { 78400d0749fSEthan Luis McDonough llvm::outs() << feature << ": " << frequency << "\n"; 78500d0749fSEthan Luis McDonough } 78600d0749fSEthan Luis McDonough } 78700d0749fSEthan Luis McDonough 788f2e80893SPeter Klausler bool beginSourceFileAction() override { 789f2e80893SPeter Klausler return runPrescan() && runParse(/*emitMessages=*/true); 790f2e80893SPeter Klausler } 79100d0749fSEthan Luis McDonough }; 79200d0749fSEthan Luis McDonough 79300d0749fSEthan Luis McDonough static FrontendPluginRegistry::Add<FeatureListAction> X( 79400d0749fSEthan Luis McDonough "feature-list", "List program features"); 795