xref: /llvm-project/clang/test/Driver/flang/flang.f90 (revision 06eb10dadfaeaadc5d0d95d38bea4bfb5253e077)
1! Check that flang -fc1 is invoked when in --driver-mode=flang.
2
3! This is a copy of flang_ucase.F90 because the driver has logic in it which
4! differentiates between F90 and f90 files. Flang will not treat these files
5! differently.
6
7! Test various output types:
8! * -E
9! * -fsyntax-only
10! * -emit-llvm -S
11! * -emit-llvm
12! * -S
13! * (no type specified, resulting in an object file)
14
15! All invocations should begin with flang -fc1, consume up to here.
16! ALL-LABEL: "{{[^"]*}}flang{{[^"/]*}}" "-fc1"
17
18! Check that f90 files are not treated as "previously preprocessed"
19! ... in --driver-mode=flang.
20! RUN: %clang --driver-mode=flang -### -E                  %s 2>&1 | FileCheck --check-prefixes=ALL,CHECK-E %s
21! CHECK-E-NOT: previously preprocessed input
22! CHECK-E-DAG: "-E"
23! CHECK-E-DAG: "-o" "-"
24
25! RUN: %clang --driver-mode=flang -### -fsyntax-only       %s 2>&1 | FileCheck --check-prefixes=ALL,CHECK-SYNTAX-ONLY %s
26! CHECK-SYNTAX-ONLY-NOT: "-o"
27! CHECK-SYNTAX-ONLY-DAG: "-fsyntax-only"
28
29! RUN: %clang --driver-mode=flang -### -emit-llvm -S       %s 2>&1 | FileCheck --check-prefixes=ALL,CHECK-EMIT-LLVM-IR %s
30! CHECK-EMIT-LLVM-IR-DAG: "-emit-llvm"
31! CHECK-EMIT-LLVM-IR-DAG: "-o" "{{[^"]*}}.ll"
32
33! RUN: not %clang --driver-mode=flang -### -emit-llvm          %s 2>&1 | FileCheck --check-prefixes=ALL,CHECK-EMIT-LLVM-BC %s
34! CHECK-EMIT-LLVM-BC-DAG: "-emit-llvm-bc"
35! CHECK-EMIT-LLVM-BC-DAG: "-o" "{{[^"]*}}.bc"
36
37! RUN: %clang --driver-mode=flang -### -S                  %s 2>&1 | FileCheck --check-prefixes=ALL,CHECK-S %s
38! CHECK-S-DAG: "-S"
39! CHECK-S-DAG: "-o" "{{[^"]*}}.s"
40
41! RUN: %clang --driver-mode=flang -###                     %s 2>&1 | FileCheck --check-prefixes=ALL,CHECK-EMIT-OBJ %s
42! CHECK-EMIT-OBJ-DAG: "-emit-obj"
43! CHECK-EMIT-OBJ-DAG: "-o" "{{[^"]*}}.o"
44
45! Should end in the input file.
46! ALL: "{{.*}}flang.f90"{{$}}
47