2020-10-24 19:33:19 +08:00
|
|
|
|
|
|
|
!--------------------------
|
2021-04-09 18:32:31 +08:00
|
|
|
! FLANG DRIVER (flang)
|
2020-10-24 19:33:19 +08:00
|
|
|
!--------------------------
|
2021-04-09 18:32:31 +08:00
|
|
|
! RUN: %flang -help 2>&1 | FileCheck %s --check-prefix=HELP
|
|
|
|
! RUN: not %flang -helps 2>&1 | FileCheck %s --check-prefix=ERROR
|
2020-09-11 17:17:31 +08:00
|
|
|
|
2020-10-24 19:33:19 +08:00
|
|
|
!----------------------------------------
|
2021-04-09 18:32:31 +08:00
|
|
|
! FLANG FRONTEND DRIVER (flang -fc1)
|
2020-10-24 19:33:19 +08:00
|
|
|
!----------------------------------------
|
2021-04-09 18:32:31 +08:00
|
|
|
! RUN: %flang_fc1 -help 2>&1 | FileCheck %s --check-prefix=HELP-FC1
|
|
|
|
! RUN: not %flang_fc1 -helps 2>&1 | FileCheck %s --check-prefix=ERROR
|
2020-09-11 17:17:31 +08:00
|
|
|
|
2021-04-09 18:32:31 +08:00
|
|
|
! HELP:USAGE: flang
|
2020-10-06 00:42:00 +08:00
|
|
|
! HELP-EMPTY:
|
|
|
|
! HELP-NEXT:OPTIONS:
|
2020-11-11 16:45:54 +08:00
|
|
|
! HELP-NEXT: -### Print (but do not run) the commands to run for this compilation
|
2021-04-07 19:42:37 +08:00
|
|
|
! HELP-NEXT: -cpp Enable predefined and command line preprocessor macros
|
[flang][driver] Add support for `-c` and `-emit-obj`
This patch adds a frontend action for emitting object files. While Flang
does not support code-generation, this action remains a placeholder.
This patch simply provides glue-code to connect the compiler driver
with the appropriate frontend action.
The new action is triggered with the `-c` compiler driver flag, i.e.
`flang-new -c`. This is then translated to `flang-new -fc1 -emit-obj`,
so `-emit-obj` has to be marked as supported as well.
As code-generation is not available yet, `flang-new -c` results in a
driver error:
```
error: code-generation is not available yet
```
Hopefully this will help communicating the level of available
functionality within Flang.
The definition of `emit-obj` is updated so that it can be shared between
Clang and Flang. As the original definition was enclosed within a
Clang-specific TableGen `let` statement, it is extracted into a new `let`
statement. That felt like the cleanest option.
I also commented out `-triple` in Flang::ConstructJob and updated some
comments there. This is similar to https://reviews.llvm.org/D93027. I
wanted to make sure that it's clear that we can't support `-triple`
until we have code-generation. However, once code-generation is
available we _will need_ `-triple`.
As this patch adds `-emit-obj`, the emit-obj.f90 becomes irrelevant and
is deleted. Instead, phases.f90 is added to demonstrate that users can
control compilation phases (indeed, `-c` is a phase control flag).
Reviewed By: SouraVX, clementval
Differential Revision: https://reviews.llvm.org/D93301
2021-01-07 17:08:54 +08:00
|
|
|
! HELP-NEXT: -c Only run preprocess, compile, and assemble steps
|
2021-01-06 23:42:24 +08:00
|
|
|
! HELP-NEXT: -D <macro>=<value> Define <macro> to <value> (or 1 if <value> omitted)
|
[flang][driver] Add support for `--target`/`--triple`
This patch adds support for:
* `--target` in the compiler driver (`flang-new`)
* `--triple` in the frontend driver (`flang-new -fc1`)
The semantics of these flags are inherited from `clangDriver`, i.e.
consistent with `clang --target` and `clang -cc1 --triple`,
respectively.
A new structure is defined, `TargetOptions`, that will hold various
Frontend options related to the target. Currently, this is mostly a
placeholder that contains the target triple. In the future, it will be
used for storing e.g. the CPU to tune for or the target features to
enable.
Additionally, the following target/triple related options are enabled
[*]: `-print-effective-triple`, `-print-target-triple`. Definitions in
Options.td are updated accordingly and, to facilated testing,
`-emit-llvm` is added to the list of options available in `flang-new`
(previously it was only enabled in `flang-new -fc1`).
[*] These options were actually available before (like all other options
defined in `clangDriver`), but not included in `flang-new --help`.
Before this change, `flang-new` would just use `native` for defining the
target, so these options were of little value.
Differential Revision: https://reviews.llvm.org/D120246
2022-02-21 19:51:32 +08:00
|
|
|
! HELP-NEXT: -emit-llvm Use the LLVM representation for assembler and object files
|
2020-10-27 20:26:47 +08:00
|
|
|
! HELP-NEXT: -E Only run the preprocessor
|
2021-02-05 05:11:22 +08:00
|
|
|
! HELP-NEXT: -falternative-parameter-statement
|
|
|
|
! HELP-NEXT: Enable the old style PARAMETER statement
|
|
|
|
! HELP-NEXT: -fbackslash Specify that backslash in string introduces an escape character
|
2020-10-06 00:42:00 +08:00
|
|
|
! HELP-NEXT: -fcolor-diagnostics Enable colors in diagnostics
|
2021-03-04 00:28:11 +08:00
|
|
|
! HELP-NEXT: -fdefault-double-8 Set the default double precision kind to an 8 byte wide type
|
|
|
|
! HELP-NEXT: -fdefault-integer-8 Set the default integer kind to an 8 byte wide type
|
|
|
|
! HELP-NEXT: -fdefault-real-8 Set the default real kind to an 8 byte wide type
|
2021-01-27 00:27:30 +08:00
|
|
|
! HELP-NEXT: -ffixed-form Process source files in fixed form
|
|
|
|
! HELP-NEXT: -ffixed-line-length=<value>
|
|
|
|
! HELP-NEXT: Use <value> as character line width in fixed mode
|
|
|
|
! HELP-NEXT: -ffree-form Process source files in free form
|
2021-02-05 05:11:22 +08:00
|
|
|
! HELP-NEXT: -fimplicit-none No implicit typing allowed unless overridden by IMPLICIT statements
|
|
|
|
! HELP-NEXT: -finput-charset=<value> Specify the default character set for source files
|
2021-03-24 00:24:57 +08:00
|
|
|
! HELP-NEXT: -fintrinsic-modules-path <dir>
|
|
|
|
! HELP-NEXT: Specify where to find the compiled intrinsic modules
|
2021-03-04 00:28:11 +08:00
|
|
|
! HELP-NEXT: -flarge-sizes Use INTEGER(KIND=8) for the result type in size-related intrinsics
|
2021-02-05 05:11:22 +08:00
|
|
|
! HELP-NEXT: -flogical-abbreviations Enable logical abbreviations
|
[flang] Add -fno-automatic, refine IsSaved()
This legacy option (available in other Fortran compilers with various
spellings) implies the SAVE attribute for local variables on subprograms
that are not explicitly RECURSIVE. The SAVE attribute essentially implies
static rather than stack storage. This was the default setting in Fortran
until surprisingly recently, so explicit SAVE statements & attributes
could be and often were omitted from older codes. Note that initialized
objects already have an implied SAVE attribute, and objects in COMMON
effectively do too, as data overlays are extinct; and since objects that are
expected to survive from one invocation of a procedure to the next in static
storage should probably be explicit initialized in the first place, so the
use cases for this option are somewhat rare, and all of them could be
handled with explicit SAVE statements or attributes.
This implicit SAVE attribute must not apply to automatic (in the Fortran sense)
local objects, whose sizes cannot be known at compilation time. To get the
semantics of IsSaved() right, the IsAutomatic() predicate was moved into
Evaluate/tools.cpp to allow for dynamic linking of the compiler. The
redundant predicate IsAutomatic() was noticed, removed, and its uses replaced.
GNU Fortran's spelling of the option (-fno-automatic) was added to
the clang-based driver and used for basic sanity testing.
Differential Revision: https://reviews.llvm.org/D114209
2021-11-19 03:48:42 +08:00
|
|
|
! HELP-NEXT: -fno-automatic Implies the SAVE attribute for non-automatic local objects in subprograms unless RECURSIVE
|
[flang][driver] Refactor boolean options
For boolean options, e.g. `-fxor-operator`/`-fno-xor-operator`, we ought
to be using TableGen multi-classes. This way, we only have to write one
definition to have both forms auto-generated. This patch refactors all
of Flang's boolean options to use two new multi-classes:
`OptInFC1FFOption` and `OptOutFC1FFOption`. These multi-classes are
based on `OptInFFOption`/`OptOutFFOption`, respectively. I've also
simplified the processing of the updated options in
CompilerInvocation.cpp.
With the new approach, "empty" help text (i.e. no `HelpText`) is now
replaced with an empty string (i.e. HelpText<"">). When running
flang-new --help, that's considered as non-empty help messages, which is
then printed (that's controlled by `printHelp` from
llvm/lib/Option/OptTable.cpp). This means that with this patch,
flang-new --help will start printing e.g. -fno-backslash, even though
there is no actual help text to print for this option (apart from the
empty string ""). Tests are updated accordingly.
Note that with this patch, both `-fxor-operator` and `-fno-xor-operator`
(and other boolean options refactored here) remain available in
`flang-new` and `flang-new -fc1`. In this respect, nothing changes. In a
forthcoming patch, I will refine this so that `flang-new -fc1` only
accepts `-ffoo` (`OptInFC1FFOption`) or `-fno-foo` (`OptOutCC1FFOption`).
For clarity, `OptInFFOption`/`OptOutFFOption` are renamed as
`OptInCC1FFOption`/`OptOutCC1FFOption`, respectively. Otherwise, this is
an NFC from Clang's perspective.
Differential Revision: https://reviews.llvm.org/D105881
2021-06-30 18:57:48 +08:00
|
|
|
! HELP-NEXT: -fno-color-diagnostics Disable colors in diagnostics
|
2022-04-29 19:48:36 +08:00
|
|
|
! HELP-NEXT: -fno-integrated-as Disable the integrated assembler
|
2021-02-10 17:24:45 +08:00
|
|
|
! HELP-NEXT: -fopenacc Enable OpenACC
|
|
|
|
! HELP-NEXT: -fopenmp Parse OpenMP pragmas and generate parallel code.
|
2022-08-19 17:53:27 +08:00
|
|
|
! HELP-NEXT: -fsyntax-only Run the preprocessor, parser and semantic analysis stages
|
2021-02-05 05:11:22 +08:00
|
|
|
! HELP-NEXT: -fxor-operator Enable .XOR. as a synonym of .NEQV.
|
2020-10-24 19:33:19 +08:00
|
|
|
! HELP-NEXT: -help Display available options
|
2021-01-19 18:01:38 +08:00
|
|
|
! HELP-NEXT: -I <dir> Add directory to the end of the list of include search paths
|
2022-03-02 23:40:16 +08:00
|
|
|
! HELP-NEXT: -mllvm <value> Additional arguments to forward to LLVM's option processing
|
2022-04-07 17:47:23 +08:00
|
|
|
! HELP-NEXT: -mmlir <value> Additional arguments to forward to MLIR's option processing
|
2021-02-05 00:13:04 +08:00
|
|
|
! HELP-NEXT: -module-dir <dir> Put MODULE files in <dir>
|
2021-04-07 19:42:37 +08:00
|
|
|
! HELP-NEXT: -nocpp Disable predefined and command line preprocessor macros
|
2020-10-24 19:33:19 +08:00
|
|
|
! HELP-NEXT: -o <file> Write output to <file>
|
2021-03-26 01:02:05 +08:00
|
|
|
! HELP-NEXT: -pedantic Warn on language extensions
|
[flang][driver] Add support for `--target`/`--triple`
This patch adds support for:
* `--target` in the compiler driver (`flang-new`)
* `--triple` in the frontend driver (`flang-new -fc1`)
The semantics of these flags are inherited from `clangDriver`, i.e.
consistent with `clang --target` and `clang -cc1 --triple`,
respectively.
A new structure is defined, `TargetOptions`, that will hold various
Frontend options related to the target. Currently, this is mostly a
placeholder that contains the target triple. In the future, it will be
used for storing e.g. the CPU to tune for or the target features to
enable.
Additionally, the following target/triple related options are enabled
[*]: `-print-effective-triple`, `-print-target-triple`. Definitions in
Options.td are updated accordingly and, to facilated testing,
`-emit-llvm` is added to the list of options available in `flang-new`
(previously it was only enabled in `flang-new -fc1`).
[*] These options were actually available before (like all other options
defined in `clangDriver`), but not included in `flang-new --help`.
Before this change, `flang-new` would just use `native` for defining the
target, so these options were of little value.
Differential Revision: https://reviews.llvm.org/D120246
2022-02-21 19:51:32 +08:00
|
|
|
! HELP-NEXT: -print-effective-triple Print the effective target triple
|
|
|
|
! HELP-NEXT: -print-target-triple Print the normalized target triple
|
2021-07-24 07:41:04 +08:00
|
|
|
! HELP-NEXT: -P Disable linemarker output in -E mode
|
2022-04-29 19:48:36 +08:00
|
|
|
! HELP-NEXT: -save-temps=<value> Save intermediate compilation results.
|
|
|
|
! HELP-NEXT: -save-temps Save intermediate compilation results
|
2021-03-26 01:02:05 +08:00
|
|
|
! HELP-NEXT: -std=<value> Language standard to compile for
|
2022-02-25 01:34:27 +08:00
|
|
|
! HELP-NEXT: -S Only run preprocess and compilation steps
|
[flang][driver] Add support for `--target`/`--triple`
This patch adds support for:
* `--target` in the compiler driver (`flang-new`)
* `--triple` in the frontend driver (`flang-new -fc1`)
The semantics of these flags are inherited from `clangDriver`, i.e.
consistent with `clang --target` and `clang -cc1 --triple`,
respectively.
A new structure is defined, `TargetOptions`, that will hold various
Frontend options related to the target. Currently, this is mostly a
placeholder that contains the target triple. In the future, it will be
used for storing e.g. the CPU to tune for or the target features to
enable.
Additionally, the following target/triple related options are enabled
[*]: `-print-effective-triple`, `-print-target-triple`. Definitions in
Options.td are updated accordingly and, to facilated testing,
`-emit-llvm` is added to the list of options available in `flang-new`
(previously it was only enabled in `flang-new -fc1`).
[*] These options were actually available before (like all other options
defined in `clangDriver`), but not included in `flang-new --help`.
Before this change, `flang-new` would just use `native` for defining the
target, so these options were of little value.
Differential Revision: https://reviews.llvm.org/D120246
2022-02-21 19:51:32 +08:00
|
|
|
! HELP-NEXT: --target=<value> Generate code for the given target
|
2021-01-06 23:42:24 +08:00
|
|
|
! HELP-NEXT: -U <macro> Undefine macro <macro>
|
2020-10-24 19:33:19 +08:00
|
|
|
! HELP-NEXT: --version Print version information
|
2021-04-06 00:41:46 +08:00
|
|
|
! HELP-NEXT: -W<warning> Enable the specified warning
|
2021-02-17 22:13:29 +08:00
|
|
|
! HELP-NEXT: -Xflang <arg> Pass <arg> to the flang compiler
|
2020-09-11 17:17:31 +08:00
|
|
|
|
2021-04-09 18:32:31 +08:00
|
|
|
! HELP-FC1:USAGE: flang
|
2020-10-06 00:42:00 +08:00
|
|
|
! HELP-FC1-EMPTY:
|
|
|
|
! HELP-FC1-NEXT:OPTIONS:
|
2021-04-07 19:42:37 +08:00
|
|
|
! HELP-FC1-NEXT: -cpp Enable predefined and command line preprocessor macros
|
2021-01-06 23:42:24 +08:00
|
|
|
! HELP-FC1-NEXT: -D <macro>=<value> Define <macro> to <value> (or 1 if <value> omitted)
|
2022-04-06 19:59:28 +08:00
|
|
|
! HELP-FC1-NEXT: -emit-llvm-bc Build ASTs then convert to LLVM, emit .bc file
|
2022-02-05 01:15:12 +08:00
|
|
|
! HELP-FC1-NEXT: -emit-llvm Use the LLVM representation for assembler and object files
|
2022-02-04 01:00:27 +08:00
|
|
|
! HELP-FC1-NEXT: -emit-mlir Build the parse tree, then lower it to MLIR
|
[flang][driver] Add support for `-c` and `-emit-obj`
This patch adds a frontend action for emitting object files. While Flang
does not support code-generation, this action remains a placeholder.
This patch simply provides glue-code to connect the compiler driver
with the appropriate frontend action.
The new action is triggered with the `-c` compiler driver flag, i.e.
`flang-new -c`. This is then translated to `flang-new -fc1 -emit-obj`,
so `-emit-obj` has to be marked as supported as well.
As code-generation is not available yet, `flang-new -c` results in a
driver error:
```
error: code-generation is not available yet
```
Hopefully this will help communicating the level of available
functionality within Flang.
The definition of `emit-obj` is updated so that it can be shared between
Clang and Flang. As the original definition was enclosed within a
Clang-specific TableGen `let` statement, it is extracted into a new `let`
statement. That felt like the cleanest option.
I also commented out `-triple` in Flang::ConstructJob and updated some
comments there. This is similar to https://reviews.llvm.org/D93027. I
wanted to make sure that it's clear that we can't support `-triple`
until we have code-generation. However, once code-generation is
available we _will need_ `-triple`.
As this patch adds `-emit-obj`, the emit-obj.f90 becomes irrelevant and
is deleted. Instead, phases.f90 is added to demonstrate that users can
control compilation phases (indeed, `-c` is a phase control flag).
Reviewed By: SouraVX, clementval
Differential Revision: https://reviews.llvm.org/D93301
2021-01-07 17:08:54 +08:00
|
|
|
! HELP-FC1-NEXT: -emit-obj Emit native object files
|
2021-01-06 23:42:24 +08:00
|
|
|
! HELP-FC1-NEXT: -E Only run the preprocessor
|
2021-02-05 05:11:22 +08:00
|
|
|
! HELP-FC1-NEXT: -falternative-parameter-statement
|
|
|
|
! HELP-FC1-NEXT: Enable the old style PARAMETER statement
|
|
|
|
! HELP-FC1-NEXT: -fbackslash Specify that backslash in string introduces an escape character
|
[flang][Driver] Refine _when_ driver diagnostics are formatted
This patch refines //when// driver diagnostics are formatted so that
`flang-new` and `flang-new -fc1` behave consistently with `clang` and
`clang -cc1`, respectively. This change only applies to driver diagnostics.
Scanning, parsing and semantic diagnostics are separate and not covered here.
**NEW BEHAVIOUR**
To illustrate the new behaviour, consider the following input file:
```! file.f90
program m
integer :: i = k
end
```
In the following invocations, "error: Semantic errors in file.f90" _will be_
formatted:
```
$ flang-new file.f90
error: Semantic errors in file.f90
./file.f90:2:18: error: Must be a constant value
integer :: i = k
$ flang-new -fc1 -fcolor-diagnostics file.f90
error: Semantic errors in file.f90
./file.f90:2:18: error: Must be a constant value
integer :: i = k
```
However, in the following invocations, "error: Semantic errors in file.f90"
_will not be_ formatted:
```
$ flang-new -fno-color-diagnostics file.f90
error: Semantic errors in file.f90
./file.f90:2:18: error: Must be a constant value
integer :: i = k
$ flang-new -fc1 file.f90
error: Semantic errors in file.f90
./file.f90:2:18: error: Must be a constant value
integer :: i = k
```
Before this change, none of the above would be formatted. Note also that the
default behaviour in `flang-new` is different to `flang-new -fc1` (this is
consistent with Clang).
**NOTES ON IMPLEMENTATION**
Note that the diagnostic options are parsed in `createAndPopulateDiagOpt`s in
driver.cpp. That's where the driver's `DiagnosticEngine` options are set. Like
most command-line compiler driver options, these flags are "claimed" in
Flang.cpp (i.e. when creating a frontend driver invocation) by calling
`getLastArg` rather than in driver.cpp.
In Clang's Options.td, `defm color_diagnostics` is replaced with two separate
definitions: `def fcolor_diagnostics` and def fno_color_diagnostics`. That's
because originally `color_diagnostics` derived from `OptInCC1FFlag`, which is a
multiclass for opt-in options in CC1. In order to preserve the current
behaviour in `clang -cc1` (i.e. to keep `-fno-color-diagnostics` unavailable in
`clang -cc1`) and to implement similar behaviour in `flang-new -fc1`, we can't
re-use `OptInCC1FFlag`.
Formatting is only available in consoles that support it and will normally mean that
the message is printed in bold + color.
Co-authored-by: Andrzej Warzynski <andrzej.warzynski@arm.com>
Reviewed By: rovka
Differential Revision: https://reviews.llvm.org/D126164
2022-06-22 23:56:34 +08:00
|
|
|
! HELP-FC1-NEXT: -fcolor-diagnostics Enable colors in diagnostics
|
2021-06-15 23:30:23 +08:00
|
|
|
! HELP-FC1-NEXT: -fdebug-dump-all Dump symbols and the parse tree after the semantic checks
|
2021-03-30 18:35:42 +08:00
|
|
|
! HELP-FC1-NEXT: -fdebug-dump-parse-tree-no-sema
|
|
|
|
! HELP-FC1-NEXT: Dump the parse tree (skips the semantic checks)
|
2021-02-17 23:55:56 +08:00
|
|
|
! HELP-FC1-NEXT: -fdebug-dump-parse-tree Dump the parse tree
|
2021-02-24 01:59:17 +08:00
|
|
|
! HELP-FC1-NEXT: -fdebug-dump-parsing-log
|
|
|
|
! HELP-FC1-NEXT: Run instrumented parse and dump the parsing log
|
2022-03-08 18:01:55 +08:00
|
|
|
! HELP-FC1-NEXT: -fdebug-dump-pft Dump the pre-fir parse tree
|
2021-02-17 23:55:56 +08:00
|
|
|
! HELP-FC1-NEXT: -fdebug-dump-provenance Dump provenance
|
|
|
|
! HELP-FC1-NEXT: -fdebug-dump-symbols Dump symbols after the semantic analysis
|
2021-02-18 02:53:05 +08:00
|
|
|
! HELP-FC1-NEXT: -fdebug-measure-parse-tree
|
|
|
|
! HELP-FC1-NEXT: Measure the parse tree
|
2021-03-11 20:35:45 +08:00
|
|
|
! HELP-FC1-NEXT: -fdebug-module-writer Enable debug messages while writing module files
|
2022-06-06 17:44:21 +08:00
|
|
|
! HELP-FC1-NEXT: -fdebug-pass-manager Prints debug information for the new pass manage
|
2021-02-18 02:53:05 +08:00
|
|
|
! HELP-FC1-NEXT: -fdebug-pre-fir-tree Dump the pre-FIR tree
|
2021-03-30 18:35:42 +08:00
|
|
|
! HELP-FC1-NEXT: -fdebug-unparse-no-sema Unparse and stop (skips the semantic checks)
|
2021-02-04 19:14:57 +08:00
|
|
|
! HELP-FC1-NEXT: -fdebug-unparse-with-symbols
|
|
|
|
! HELP-FC1-NEXT: Unparse and stop.
|
|
|
|
! HELP-FC1-NEXT: -fdebug-unparse Unparse and stop.
|
2021-03-04 00:28:11 +08:00
|
|
|
! HELP-FC1-NEXT: -fdefault-double-8 Set the default double precision kind to an 8 byte wide type
|
|
|
|
! HELP-FC1-NEXT: -fdefault-integer-8 Set the default integer kind to an 8 byte wide type
|
|
|
|
! HELP-FC1-NEXT: -fdefault-real-8 Set the default real kind to an 8 byte wide type
|
2021-01-27 00:27:30 +08:00
|
|
|
! HELP-FC1-NEXT: -ffixed-form Process source files in fixed form
|
|
|
|
! HELP-FC1-NEXT: -ffixed-line-length=<value>
|
|
|
|
! HELP-FC1-NEXT: Use <value> as character line width in fixed mode
|
|
|
|
! HELP-FC1-NEXT: -ffree-form Process source files in free form
|
2021-04-14 18:43:14 +08:00
|
|
|
! HELP-FC1-NEXT: -fget-definition <value> <value> <value>
|
|
|
|
! HELP-FC1-NEXT: Get the symbol definition from <line> <start-column> <end-column>
|
2021-03-09 00:54:11 +08:00
|
|
|
! HELP-FC1-NEXT: -fget-symbols-sources Dump symbols and their source code locations
|
2021-02-05 05:11:22 +08:00
|
|
|
! HELP-FC1-NEXT: -fimplicit-none No implicit typing allowed unless overridden by IMPLICIT statements
|
|
|
|
! HELP-FC1-NEXT: -finput-charset=<value> Specify the default character set for source files
|
2021-03-24 00:24:57 +08:00
|
|
|
! HELP-FC1-NEXT: -fintrinsic-modules-path <dir>
|
|
|
|
! HELP-FC1-NEXT: Specify where to find the compiled intrinsic modules
|
2021-03-04 00:28:11 +08:00
|
|
|
! HELP-FC1-NEXT: -flarge-sizes Use INTEGER(KIND=8) for the result type in size-related intrinsics
|
2021-02-05 05:11:22 +08:00
|
|
|
! HELP-FC1-NEXT: -flogical-abbreviations Enable logical abbreviations
|
2021-06-04 22:25:58 +08:00
|
|
|
! HELP-FC1-NEXT: -fno-analyzed-objects-for-unparse
|
|
|
|
! HELP-FC1-NEXT: Do not use the analyzed objects when unparsing
|
[flang] Add -fno-automatic, refine IsSaved()
This legacy option (available in other Fortran compilers with various
spellings) implies the SAVE attribute for local variables on subprograms
that are not explicitly RECURSIVE. The SAVE attribute essentially implies
static rather than stack storage. This was the default setting in Fortran
until surprisingly recently, so explicit SAVE statements & attributes
could be and often were omitted from older codes. Note that initialized
objects already have an implied SAVE attribute, and objects in COMMON
effectively do too, as data overlays are extinct; and since objects that are
expected to survive from one invocation of a procedure to the next in static
storage should probably be explicit initialized in the first place, so the
use cases for this option are somewhat rare, and all of them could be
handled with explicit SAVE statements or attributes.
This implicit SAVE attribute must not apply to automatic (in the Fortran sense)
local objects, whose sizes cannot be known at compilation time. To get the
semantics of IsSaved() right, the IsAutomatic() predicate was moved into
Evaluate/tools.cpp to allow for dynamic linking of the compiler. The
redundant predicate IsAutomatic() was noticed, removed, and its uses replaced.
GNU Fortran's spelling of the option (-fno-automatic) was added to
the clang-based driver and used for basic sanity testing.
Differential Revision: https://reviews.llvm.org/D114209
2021-11-19 03:48:42 +08:00
|
|
|
! HELP-FC1-NEXT: -fno-automatic Implies the SAVE attribute for non-automatic local objects in subprograms unless RECURSIVE
|
2022-06-06 17:44:21 +08:00
|
|
|
! HELP-FC1-NEXT: -fno-debug-pass-manager Disables debug printing for the new pass manager
|
2021-07-24 07:41:04 +08:00
|
|
|
! HELP-FC1-NEXT: -fno-reformat Dump the cooked character stream in -E mode
|
2021-02-10 17:24:45 +08:00
|
|
|
! HELP-FC1-NEXT: -fopenacc Enable OpenACC
|
|
|
|
! HELP-FC1-NEXT: -fopenmp Parse OpenMP pragmas and generate parallel code.
|
2022-08-19 17:53:27 +08:00
|
|
|
! HELP-FC1-NEXT: -fsyntax-only Run the preprocessor, parser and semantic analysis stages
|
2021-02-05 05:11:22 +08:00
|
|
|
! HELP-FC1-NEXT: -fxor-operator Enable .XOR. as a synonym of .NEQV.
|
2021-01-06 23:42:24 +08:00
|
|
|
! HELP-FC1-NEXT: -help Display available options
|
2021-06-07 22:40:26 +08:00
|
|
|
! HELP-FC1-NEXT: -init-only Only execute frontend initialization
|
2021-01-19 18:01:38 +08:00
|
|
|
! HELP-FC1-NEXT: -I <dir> Add directory to the end of the list of include search paths
|
2021-08-12 18:42:08 +08:00
|
|
|
! HELP-FC1-NEXT: -load <dsopath> Load the named plugin (dynamic shared object)
|
2022-03-02 23:40:16 +08:00
|
|
|
! HELP-FC1-NEXT: -mllvm <value> Additional arguments to forward to LLVM's option processing
|
2022-04-07 17:47:23 +08:00
|
|
|
! HELP-FC1-NEXT: -mmlir <value> Additional arguments to forward to MLIR's option processing
|
2021-02-05 00:13:04 +08:00
|
|
|
! HELP-FC1-NEXT: -module-dir <dir> Put MODULE files in <dir>
|
2021-06-04 20:58:03 +08:00
|
|
|
! HELP-FC1-NEXT: -module-suffix <suffix> Use <suffix> as the suffix for module files (the default value is `.mod`)
|
2022-08-23 01:24:49 +08:00
|
|
|
! HELP-FC1-NEXT: -mrelocation-model <value>
|
|
|
|
! HELP-FC1-NEXT: The relocation model to use
|
2021-04-07 19:42:37 +08:00
|
|
|
! HELP-FC1-NEXT: -nocpp Disable predefined and command line preprocessor macros
|
2021-01-06 23:42:24 +08:00
|
|
|
! HELP-FC1-NEXT: -o <file> Write output to <file>
|
2021-03-26 01:02:05 +08:00
|
|
|
! HELP-FC1-NEXT: -pedantic Warn on language extensions
|
2022-08-23 01:24:49 +08:00
|
|
|
! HELP-FC1-NEXT: -pic-is-pie File is for a position independent executable
|
|
|
|
! HELP-FC1-NEXT: -pic-level <value> Value for __PIC__
|
2021-08-12 18:42:08 +08:00
|
|
|
! HELP-FC1-NEXT: -plugin <name> Use the named plugin action instead of the default action (use "help" to list available options)
|
2021-07-24 07:41:04 +08:00
|
|
|
! HELP-FC1-NEXT: -P Disable linemarker output in -E mode
|
2021-03-26 01:02:05 +08:00
|
|
|
! HELP-FC1-NEXT: -std=<value> Language standard to compile for
|
2022-02-25 01:34:27 +08:00
|
|
|
! HELP-FC1-NEXT: -S Only run preprocess and compilation steps
|
2021-02-17 22:13:29 +08:00
|
|
|
! HELP-FC1-NEXT: -test-io Run the InputOuputTest action. Use for development and testing only.
|
[flang][driver] Add support for `--target`/`--triple`
This patch adds support for:
* `--target` in the compiler driver (`flang-new`)
* `--triple` in the frontend driver (`flang-new -fc1`)
The semantics of these flags are inherited from `clangDriver`, i.e.
consistent with `clang --target` and `clang -cc1 --triple`,
respectively.
A new structure is defined, `TargetOptions`, that will hold various
Frontend options related to the target. Currently, this is mostly a
placeholder that contains the target triple. In the future, it will be
used for storing e.g. the CPU to tune for or the target features to
enable.
Additionally, the following target/triple related options are enabled
[*]: `-print-effective-triple`, `-print-target-triple`. Definitions in
Options.td are updated accordingly and, to facilated testing,
`-emit-llvm` is added to the list of options available in `flang-new`
(previously it was only enabled in `flang-new -fc1`).
[*] These options were actually available before (like all other options
defined in `clangDriver`), but not included in `flang-new --help`.
Before this change, `flang-new` would just use `native` for defining the
target, so these options were of little value.
Differential Revision: https://reviews.llvm.org/D120246
2022-02-21 19:51:32 +08:00
|
|
|
! HELP-FC1-NEXT: -triple <value> Specify target triple (e.g. i686-apple-darwin9)
|
2021-01-06 23:42:24 +08:00
|
|
|
! HELP-FC1-NEXT: -U <macro> Undefine macro <macro>
|
2022-03-29 02:28:51 +08:00
|
|
|
! HELP-FC1-NEXT: -version Print the compiler version
|
2021-04-06 00:41:46 +08:00
|
|
|
! HELP-FC1-NEXT: -W<warning> Enable the specified warning
|
2020-10-06 00:42:00 +08:00
|
|
|
|
2020-10-24 19:33:19 +08:00
|
|
|
! ERROR: error: unknown argument '-helps'; did you mean '-help'
|