xref: /llvm-project/flang/test/Examples/feature-list-functions.f90 (revision 00d0749f92ece4b7bb4c7bc8f62c88f230f8710c)
1*00d0749fSEthan Luis McDonough! UNSUPPORTED: system-windows
2*00d0749fSEthan Luis McDonough! REQUIRES: plugins, shell, examples
3*00d0749fSEthan Luis McDonough
4*00d0749fSEthan Luis McDonough! RUN: %flang_fc1 -load %llvmshlibdir/flangFeatureList%pluginext \
5*00d0749fSEthan Luis McDonough! RUN:            -plugin feature-list %s 2>&1 | FileCheck %s
6*00d0749fSEthan Luis McDonough
7*00d0749fSEthan Luis McDonoughprogram list_features_test
8*00d0749fSEthan Luis McDonough    implicit none
9*00d0749fSEthan Luis McDonough    call test_sub(test_func(2, 3), 4)
10*00d0749fSEthan Luis McDonoughcontains
11*00d0749fSEthan Luis McDonough    subroutine test_sub(a, b)
12*00d0749fSEthan Luis McDonough        integer, intent(in) :: a, b
13*00d0749fSEthan Luis McDonough        print "(I0)", a + b
14*00d0749fSEthan Luis McDonough    end subroutine
15*00d0749fSEthan Luis McDonough
16*00d0749fSEthan Luis McDonough    integer function test_func(a, b)
17*00d0749fSEthan Luis McDonough        integer, intent(in) :: a, b
18*00d0749fSEthan Luis McDonough        test_func = a * b
19*00d0749fSEthan Luis McDonough    end function
20*00d0749fSEthan Luis McDonoughend program list_features_test
21*00d0749fSEthan Luis McDonough
22*00d0749fSEthan Luis McDonough! CHECK: Name: 19
23*00d0749fSEthan Luis McDonough! CHECK-NEXT: Expr: 11
24*00d0749fSEthan Luis McDonough! CHECK-NEXT: DataRef: 5
25*00d0749fSEthan Luis McDonough! CHECK-NEXT: Designator: 5
26*00d0749fSEthan Luis McDonough! CHECK-NEXT: ActualArg: 4
27*00d0749fSEthan Luis McDonough! CHECK-NEXT: ActualArgSpec: 4
28*00d0749fSEthan Luis McDonough! CHECK-NEXT: EntityDecl: 4
29*00d0749fSEthan Luis McDonough! CHECK-NEXT: LiteralConstant: 4
30*00d0749fSEthan Luis McDonough! CHECK-NEXT: ActionStmt: 3
31*00d0749fSEthan Luis McDonough! CHECK-NEXT: Block: 3
32*00d0749fSEthan Luis McDonough! CHECK-NEXT: DeclarationTypeSpec: 3
33*00d0749fSEthan Luis McDonough! CHECK-NEXT: ExecutableConstruct: 3
34*00d0749fSEthan Luis McDonough! CHECK-NEXT: ExecutionPart: 3
35*00d0749fSEthan Luis McDonough! CHECK-NEXT: ExecutionPartConstruct: 3
36*00d0749fSEthan Luis McDonough! CHECK-NEXT: ImplicitPart: 3
37*00d0749fSEthan Luis McDonough! CHECK-NEXT: IntLiteralConstant: 3
38*00d0749fSEthan Luis McDonough! CHECK-NEXT: IntegerTypeSpec: 3
39*00d0749fSEthan Luis McDonough! CHECK-NEXT: IntrinsicTypeSpec: 3
40*00d0749fSEthan Luis McDonough! CHECK-NEXT: SpecificationPart: 3
41*00d0749fSEthan Luis McDonough! CHECK-NEXT: AttrSpec: 2
42*00d0749fSEthan Luis McDonough! CHECK-NEXT: Call: 2
43*00d0749fSEthan Luis McDonough! CHECK-NEXT: DeclarationConstruct: 2
44*00d0749fSEthan Luis McDonough! CHECK-NEXT: DummyArg: 2
45*00d0749fSEthan Luis McDonough! CHECK-NEXT: IntentSpec: 2
46*00d0749fSEthan Luis McDonough! CHECK-NEXT: IntentSpec::Intent: 2
47*00d0749fSEthan Luis McDonough! CHECK-NEXT: InternalSubprogram: 2
48*00d0749fSEthan Luis McDonough! CHECK-NEXT: ProcedureDesignator: 2
49*00d0749fSEthan Luis McDonough! CHECK-NEXT: SpecificationConstruct: 2
50*00d0749fSEthan Luis McDonough! CHECK-NEXT: TypeDeclarationStmt: 2
51*00d0749fSEthan Luis McDonough! CHECK-NEXT: AssignmentStmt: 1
52*00d0749fSEthan Luis McDonough! CHECK-NEXT: CallStmt: 1
53*00d0749fSEthan Luis McDonough! CHECK-NEXT: CharLiteralConstant: 1
54*00d0749fSEthan Luis McDonough! CHECK-NEXT: ContainsStmt: 1
55*00d0749fSEthan Luis McDonough! CHECK-NEXT: EndFunctionStmt: 1
56*00d0749fSEthan Luis McDonough! CHECK-NEXT: EndProgramStmt: 1
57*00d0749fSEthan Luis McDonough! CHECK-NEXT: EndSubroutineStmt: 1
58*00d0749fSEthan Luis McDonough! CHECK-NEXT: Expr::Add: 1
59*00d0749fSEthan Luis McDonough! CHECK-NEXT: Expr::Multiply: 1
60*00d0749fSEthan Luis McDonough! CHECK-NEXT: Format: 1
61*00d0749fSEthan Luis McDonough! CHECK-NEXT: FunctionReference: 1
62*00d0749fSEthan Luis McDonough! CHECK-NEXT: FunctionStmt: 1
63*00d0749fSEthan Luis McDonough! CHECK-NEXT: FunctionSubprogram: 1
64*00d0749fSEthan Luis McDonough! CHECK-NEXT: ImplicitPartStmt: 1
65*00d0749fSEthan Luis McDonough! CHECK-NEXT: ImplicitStmt: 1
66*00d0749fSEthan Luis McDonough! CHECK-NEXT: InternalSubprogramPart: 1
67*00d0749fSEthan Luis McDonough! CHECK-NEXT: MainProgram: 1
68*00d0749fSEthan Luis McDonough! CHECK-NEXT: OutputItem: 1
69*00d0749fSEthan Luis McDonough! CHECK-NEXT: PrefixSpec: 1
70*00d0749fSEthan Luis McDonough! CHECK-NEXT: PrintStmt: 1
71*00d0749fSEthan Luis McDonough! CHECK-NEXT: Program: 1
72*00d0749fSEthan Luis McDonough! CHECK-NEXT: ProgramStmt: 1
73*00d0749fSEthan Luis McDonough! CHECK-NEXT: ProgramUnit: 1
74*00d0749fSEthan Luis McDonough! CHECK-NEXT: SubroutineStmt: 1
75*00d0749fSEthan Luis McDonough! CHECK-NEXT: SubroutineSubprogram: 1
76*00d0749fSEthan Luis McDonough! CHECK-NEXT: Variable: 1
77