#
7416e8a8 |
| 05-Apr-2021 |
Arnamoy Bhattacharyya <arnamoy.bhattacharyya@huawei.com> |
[flang][driver] Add options for -Werror
With the option given, warnings are treated as error.
Reviewed By: awarzynski
Differential Revision: https://reviews.llvm.org/D98657
|
#
fcf629d7 |
| 25-Mar-2021 |
Andrzej Warzynski <andrzej.warzynski@arm.com> |
[flang][driver] Fix typos and inconsistent comments (nfc)
|
#
4c7ebf79 |
| 25-Mar-2021 |
Arnamoy Bhattacharyya <arnamoy.bhattacharyya@huawei.com> |
[flang][driver] Add options for -std=f2018
Reviewed By: awarzynski
Differential Revision: https://reviews.llvm.org/D97119
|
#
cd4abc52 |
| 23-Mar-2021 |
Arnamoy Bhattacharyya <arnamoy.bhattacharyya@huawei.com> |
[flang][driver] Add -fintrinsic-modules-path option
Reviewed By: awarzynski
Differential Revision: https://reviews.llvm.org/D97080
|
Revision tags: llvmorg-12.0.0-rc3 |
|
#
eefda605 |
| 08-Mar-2021 |
Andrzej Warzynski <andrzej.warzynski@arm.com> |
[flang][driver] Add support for `-fget-symbols-sources`
Adds support for `-fget-symbols-sources` in the new Flang driver. All relevant tests are updated to use the new driver when `FLANG_BUILD_NEW_D
[flang][driver] Add support for `-fget-symbols-sources`
Adds support for `-fget-symbols-sources` in the new Flang driver. All relevant tests are updated to use the new driver when `FLANG_BUILD_NEW_DRIVER` is set.
`RUN` lines in tests are updated so `-fsyntax-only` comes before `-fget-symbols-sources`. That's because: * both `-fsyntax-only` and `-fget-symbols-sources` are action flags, and * the new driver, flang-new, will only consider the right-most action flag. In other words, this change is needed so that the tests work with both `f18` (requires both flags) and `flang-new` (only considers the last action flag).
Differential Revision: https://reviews.llvm.org/D98191
show more ...
|
#
1fd4beec |
| 11-Mar-2021 |
Arnamoy Bhattacharyya <arnamoy10@gmail.com> |
[flang][driver] Add -fdebug-module-writer option
|
Revision tags: llvmorg-12.0.0-rc2 |
|
#
523d7bc6 |
| 23-Feb-2021 |
Andrzej Warzynski <andrzej.warzynski@arm.com> |
[flang][driver] Add `-fdebug-dump-parsing-log`
This patch adds `-fdebug-dump-parsing-log` in the new driver. This option is semantically identical to `-fdebug-instrumented-parse` in `f18` (the forme
[flang][driver] Add `-fdebug-dump-parsing-log`
This patch adds `-fdebug-dump-parsing-log` in the new driver. This option is semantically identical to `-fdebug-instrumented-parse` in `f18` (the former is added as an alias in `f18`).
As dumping the parsing log makes only sense for instrumented parses, we set Fortran::parser::Options::instrumentedParse to `True` when `-fdebug-dump-parsing-log` is used. This is consistent with `f18`.
To facilitate tweaking the configuration of the frontend based on the action being requested, `setUpFrontendBasedOnAction` is introduced in CompilerInvocation.cpp.
Differential Revision: https://reviews.llvm.org/D97457
show more ...
|
#
ab971c29 |
| 03-Mar-2021 |
Arnamoy Bhattacharyya <arnamoy10@gmail.com> |
[flang][driver] Add options for -fdefault* and -flarge-sizes
Add support for the following Fortran dialect options: - -default* - -flarge-sizes
It also adds two test cases: # For checking whe
[flang][driver] Add options for -fdefault* and -flarge-sizes
Add support for the following Fortran dialect options: - -default* - -flarge-sizes
It also adds two test cases: # For checking whether `flang-new` is passing options correctly to `flang-new -fc1`. # For checking if `fdefault-` arguments are processed properly.
Also moves the Dialect related option parsing to a dedicated function and adds a member `defaultKinds()` to `CompilerInvocation`
Depends on: D96032
Differential Revision: https://reviews.llvm.org/D96344
show more ...
|
#
529f7181 |
| 17-Feb-2021 |
Faris Rehman <faris.rehman@arm.com> |
[flang][driver] Add debug measure-parse-tree and pre-fir-tree options
Add the following options: * -fdebug-measure-parse-tree * -fdebug-pre-fir-tree
Summary of changes: - Add 2 new frontend actions
[flang][driver] Add debug measure-parse-tree and pre-fir-tree options
Add the following options: * -fdebug-measure-parse-tree * -fdebug-pre-fir-tree
Summary of changes: - Add 2 new frontend actions: DebugMeasureParseTreeAction and DebugPreFIRTreeAction - Add MeasurementVisitor to FrontendActions.h - Make reportFatalSemanticErrors return true if there are any fatal errors - Port most of the `-fdebug-pre-fir-tree` tests to use the new driver if built, otherwise use f18.
Differential Revision: https://reviews.llvm.org/D96884
show more ...
|
#
4bd08dab |
| 17-Feb-2021 |
Faris Rehman <faris.rehman@arm.com> |
[flang][driver] Add debug dump options
Add the following options: * -fdebug-dump-symbols * -fdebug-dump-parse-tree * -fdebug-dump-provenance
Summary of changes: - Add 3 new frontend actions: DebugD
[flang][driver] Add debug dump options
Add the following options: * -fdebug-dump-symbols * -fdebug-dump-parse-tree * -fdebug-dump-provenance
Summary of changes: - Add 3 new frontend actions: DebugDumpSymbolsAction, DebugDumpParseTreeAction and DebugDumpProvenanceAction - Add a unique pointer to the Semantics instance created in PrescanAndSemaAction - Move fatal semantic error reporting to its own method, FrontendActions#reportFatalSemanticErrors - Port most tests using `-fdebug-dump-symbols` and `-fdebug-dump-parse-tree` to the new driver if built, otherwise default to f18
Differential Revision: https://reviews.llvm.org/D96716
show more ...
|
#
10826ea7 |
| 04-Feb-2021 |
Faris Rehman <faris.rehman@arm.com> |
[flang][driver] Add extension options and -finput-charset
Add the following options: * -fimplicit-none and -fno-implicit-none * -fbackslash and -fno-backslash * -flogical-abbreviations and -fno-logi
[flang][driver] Add extension options and -finput-charset
Add the following options: * -fimplicit-none and -fno-implicit-none * -fbackslash and -fno-backslash * -flogical-abbreviations and -fno-logical-abbreviations * -fxor-operator and -fno-xor-operator * -falternative-parameter-statement * -finput-charset=<value>
Summary of changes: - Enable extensions in CompilerInvocation#ParseFrontendArgs - Add encoding_ to Fortran::frontend::FrontendOptions - Add encoding to Fortran::parser::Options
Differential Revision: https://reviews.llvm.org/D96407
show more ...
|
#
96d229c9 |
| 04-Feb-2021 |
Andrzej Warzynski <andrzej.warzynski@arm.com> |
[flang][driver] Add options for unparsing
This patch adds the following compiler frontend driver options: * -fdebug-unparse (f18 spelling: -funparse) * -fdebug-unparse-with-symbols (f18 spelling
[flang][driver] Add options for unparsing
This patch adds the following compiler frontend driver options: * -fdebug-unparse (f18 spelling: -funparse) * -fdebug-unparse-with-symbols (f18 spelling: -funparse-with-symbols) The new driver will only accept the new spelling. `f18` will accept both the original and the new spelling.
A new base class for frontend actions is added: `PrescanAndSemaAction`. This is added to reduce code duplication that otherwise these new options would lead to. Implementation from * `ParseSyntaxOnlyAction::ExecutionAction` is moved to: * `PrescanAndSemaAction::BeginSourceFileAction` This implementation is now shared between: * PrescanAndSemaAction * ParseSyntaxOnlyAction * DebugUnparseAction * DebugUnparseWithSymbolsAction
All tests that don't require other yet unimplemented options are updated. This way `flang-new -fc1` is used instead of `f18` when `FLANG_BUILD_NEW_DRIVER` is set to `On`. In order to facilitate this, `%flang_fc1` is added in the LIT configuration (lit.cfg.py).
`asFortran` from f18.cpp is duplicated as `getBasicAsFortran` in FrontendOptions.cpp. At this stage it's hard to find a good place to share this method. I suggest that we revisit this once a switch from `f18` to `flang-new` is complete.
Differential Revision: https://reviews.llvm.org/D96483
show more ...
|
#
0feff71e |
| 11-Feb-2021 |
Andrzej Warzynski <andrzej.warzynski@arm.com> |
[flang][driver] Move standard macro predefs to a dedicated method (nfc)
This patch just addresses one of the outstanding TODOs. More specifically, it moves all the outstanding standard macro predefi
[flang][driver] Move standard macro predefs to a dedicated method (nfc)
This patch just addresses one of the outstanding TODOs. More specifically, it moves all the outstanding standard macro predefinitions from `SetDefaultFortranOpts` to `setDefaultPredefinitions`. This dedicated method for standard macro predefs was introduced in: * https://reviews.llvm.org/D96032
show more ...
|
#
6d48a1a5 |
| 10-Feb-2021 |
Faris Rehman <faris.rehman@arm.com> |
[flang][driver] Add support for -fopenmp and -fopenacc
Add support for the following options: * -fopenmp * -fopenacc
Update OpenMP and OpenACC semantics tests to use the new driver if it is built,
[flang][driver] Add support for -fopenmp and -fopenacc
Add support for the following options: * -fopenmp * -fopenacc
Update OpenMP and OpenACC semantics tests to use the new driver if it is built, otherwise use f18. OpenMP tests that include `use omp_lib` or run `test_symbols.sh` have not been updated as they require options `-intrinsic-module-directory` and `-funparse-with-symbols` which are currently not implemented in the new driver. Similarly OpenACC tests that run `test_symbols.sh` have not been updated.
This patch also moves semanticsContext to CompilerInvocation and creates it in CompilerInvocation#setSemanticsOpts so that the semantics context can use Fortran::parser::Options#features.
Summary of changes: - Move semanticsContext to CompilerInvocation.h - Update OpenMP and OpenACC semantics tests that do not rely on `-intrinsic-module-directory` and `-funparse-with-symbols` to use %flang
Differential Revision: https://reviews.llvm.org/D96032
show more ...
|
#
985a42fd |
| 04-Feb-2021 |
Arnamoy Bhattacharyya <arnamoy10@gmail.com> |
[flang][driver] Add support for `-J/-module-dir`
Add support for option -J/-module-dir in the new Flang driver. This will allow for including module files in other directories, as the default searc
[flang][driver] Add support for `-J/-module-dir`
Add support for option -J/-module-dir in the new Flang driver. This will allow for including module files in other directories, as the default search path is currently the working folder. This also provides an option of storing the output module in the specified folder.
Differential Revision: https://reviews.llvm.org/D95448
show more ...
|
Revision tags: llvmorg-11.1.0, llvmorg-11.1.0-rc3, llvmorg-12.0.0-rc1, llvmorg-13-init |
|
#
3a1513c1 |
| 26-Jan-2021 |
Faris Rehman <faris.rehman@arm.com> |
[flang][driver] Add forced form flags and -ffixed-line-length
Add support for the following layout options: * -ffree-form * -ffixed-form - -ffixed-line-length=n (alias -ffixed-line-length-n) Additio
[flang][driver] Add forced form flags and -ffixed-line-length
Add support for the following layout options: * -ffree-form * -ffixed-form - -ffixed-line-length=n (alias -ffixed-line-length-n) Additionally remove options `-fno-free-form` and `-fno-fixed-form` as they were initially added to forward to gfortran but gfortran does not support these flags.
This patch adds the flag FlangOnlyOption to the existing options `-ffixed-form`, `-ffree-form` and `-ffree-line-length-` in Options.td. As of commit 6a75496836ea14bcfd2f4b59d35a1cad4ac58cee, these flags are not currently forwarded to gfortran anyway.
The default fixed line length in FrontendOptions is 72, based off the current default in Fortran::parser::Options. The line length cannot be set to a negative integer, or a positive integer less than 7 excluding 0, consistent with the behaviour of gfortran.
This patch does not add `-ffree-line-length-n` as Fortran::parser::Options does not have a variable for free form columns. Whilst the `fixedFormColumns` variable is used in f18 for `-ffree-line-length-n`, f18 only allows `-ffree-line-length-none`/`-ffree-line-length-0` and not a user-specified value. `fixedFormcolumns` cannot be used in the new driver as it is ignored in the frontend when dealing with free form files.
Summary of changes: - Remove -fno-fixed-form and -fno-free-form from Options.td - Make -ffixed-form, -ffree-form and -ffree-line-length-n FlangOnlyOption in Options.td - Create AddFortranDialectOptions method in Flang.cpp - Create FortranForm enum in FrontendOptions.h - Add fortranForm_ and fixedFormColumns_ to Fortran::frontend::FrontendOptions - Update fixed-form-test.f so that it guarantees that it fails when forced as a free form file to better facilitate testing.
Differential Revision: https://reviews.llvm.org/D95460
show more ...
|
#
760e6c4c |
| 02-Feb-2021 |
Andrzej Warzynski <andrzej.warzynski@arm.com> |
[flang][driver] Disallow non-existent input files in the frontend driver
This patch adds a check that verifies that the input file used when calling the frontend driver (i.e. `flang-new -fc1`) actua
[flang][driver] Disallow non-existent input files in the frontend driver
This patch adds a check that verifies that the input file used when calling the frontend driver (i.e. `flang-new -fc1`) actually exists. This was not required for the compiler driver, `flang-new`, as that's already handled in libclangDriver.
Once all input/output file management is moved to the driver, we should also check that for input from `stdin` the corresponding file descriptor was successfully acquired.
This patch also makes sure that the default action in the frontend is `ParseSyntaxOnly`. This is consistent with Clang. Before this change `flang-new -fc1` would do nothing, which makes testing changes like the one introduced here a bit tricky.
Reviewed By: SouraVX
Differential Revision: https://reviews.llvm.org/D95127
show more ...
|
#
8e3adda8 |
| 25-Jan-2021 |
Faris Rehman <faris.rehman@arm.com> |
[flang][driver] Remove newline in CompilerInvocation
Remove a new line in CompilerInvocation, to now follow the style when clang-format is applied.
|
Revision tags: llvmorg-11.1.0-rc2 |
|
#
197d9a55 |
| 19-Jan-2021 |
Faris Rehman <faris.rehman@arm.com> |
[flang][driver] Add standard macro predefinitions for compiler version
Add the following standard predefinitions that f18 supports: * `__flang__`, * `__flang_major__`, * `__flang_minor__`, *
[flang][driver] Add standard macro predefinitions for compiler version
Add the following standard predefinitions that f18 supports: * `__flang__`, * `__flang_major__`, * `__flang_minor__`, * `__flang_patchlevel__`
Summary of changes: - Populate Fortran::parser::Options#predefinitions with the default supported predefinitions
Differential Revision: https://reviews.llvm.org/D94516
show more ...
|
#
87dfd5e0 |
| 19-Jan-2021 |
Faris Rehman <faris.rehman@arm.com> |
[flang][driver] Add support for `-I` in the new driver
Add support for option -I in the new Flang driver. This will allow for included headers and module files in other directories, as the default s
[flang][driver] Add support for `-I` in the new driver
Add support for option -I in the new Flang driver. This will allow for included headers and module files in other directories, as the default search path is currently the working folder. The behaviour of this is consistent with the current f18 driver, where the current folder (i.e. ".") has the highest priority followed by the order of '-I's taking priority from first to last.
Summary of changes: - Add SearchDirectoriesFromDashI to PreprocessorOptions, to be forwarded into the parser's searchDirectories - Add header files and non-functional module files to be used in regression tests. The module files are just text files and are used to demonstrated that paths specified with `-I` are taken into account when searching for .mod files.
Differential Revision: https://reviews.llvm.org/D93453
show more ...
|
Revision tags: llvmorg-11.1.0-rc1 |
|
#
e5cdb6c5 |
| 07-Jan-2021 |
Andrzej Warzynski <andrzej.warzynski@arm.com> |
[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. Thi
[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
show more ...
|
#
7809fa20 |
| 06-Jan-2021 |
Faris Rehman <faris.rehman@arm.com> |
[flang][driver] Add support for `-D`, `-U`
Add support for options -D and -U in the new Flang driver.
Summary of changes: - Create PreprocessorOptions, to be used by the driver then translated
[flang][driver] Add support for `-D`, `-U`
Add support for options -D and -U in the new Flang driver.
Summary of changes: - Create PreprocessorOptions, to be used by the driver then translated into Fortran::parser::Options - Create CompilerInvocation::setFortranOpts to pass preprocessor options into the parser options - Add a dedicated method, Flang::AddPreprocessingOptions, to extract preprocessing options from the driver arguments into the preprocessor command arguments
Macros specified like -DName will default to definition 1.
When defining macros, the new driver will drop anything after an end-of-line character. This is consistent with gfortran and clang, but different to what currently f18 does. However, flang (which is a bash wrapper for f18), also drops everything after an end-of-line character. So gfortran-like behaviour felt like the natural choice. Test is added to demonstrate this behaviour.
Reviewed By: awarzynski
Differential Revision: https://reviews.llvm.org/D93401
show more ...
|
Revision tags: llvmorg-11.0.1, llvmorg-11.0.1-rc2 |
|
#
7d246cb1 |
| 08-Dec-2020 |
Andrzej Warzynski <andrzej.warzynski@arm.com> |
[flang][driver] Add support for `-fsyntax-only`
The behaviour triggered with this flag is consistent with `-fparse-only` in `flang` (i.e. the throwaway driver). This new spelling is consistent with
[flang][driver] Add support for `-fsyntax-only`
The behaviour triggered with this flag is consistent with `-fparse-only` in `flang` (i.e. the throwaway driver). This new spelling is consistent with Clang and gfortran, and was proposed and agreed on for the new driver in [1].
This patch also adds some minimal logic to communicate whether the semantic checks have failed or not. When semantic checks fail, a frontend driver error is generated. The return code from the frontend driver is then determined by checking the driver diagnostics - the presence of driver errors means that the compilation has failed. This logic is consistent with `clang -cc1`.
[1] http://lists.llvm.org/pipermail/flang-dev/2020-November/000588.html
Differential Revision: https://reviews.llvm.org/D92854
show more ...
|
#
6bbbe4a5 |
| 14-Dec-2020 |
Andrzej Warzynski <andrzej.warzynski@arm.com> |
[flang][driver] Fix a small bug (auto vs auto&)
This bug hasn't affected us yet as our usage is too basic, i.e. we don't rely on the defaults provided by `SetDefaultFortranOpts` just yet. This will
[flang][driver] Fix a small bug (auto vs auto&)
This bug hasn't affected us yet as our usage is too basic, i.e. we don't rely on the defaults provided by `SetDefaultFortranOpts` just yet. This will change shortly.
show more ...
|
Revision tags: llvmorg-11.0.1-rc1 |
|
#
d28de0d7 |
| 27-Oct-2020 |
Caroline Concatto <caroline.concatto@arm.com> |
[Flang][Driver] Add PrintPreprocessedInput FrontendAction (`flang-new -E`)
This patch implements the first frontend action for the Flang parser (i.e. Fortran::parser). This action runs the preproces
[Flang][Driver] Add PrintPreprocessedInput FrontendAction (`flang-new -E`)
This patch implements the first frontend action for the Flang parser (i.e. Fortran::parser). This action runs the preprocessor and is invoked with the `-E` flag. (i.e. `flang-new -E <input-file>). The generated output is printed to either stdout or the output file (specified with `-` or `-o <output-file>`).
Note that currently there is no mechanism to map options for the frontend driver (i.e. Fortran::frontend::FrontendOptions) to options for the parser (i.e. Fortran::parser::Options). Instead, Frotran::parser::options are hard-coded to:
``` std::vector<std::string> searchDirectories{"."s}; searchDirectories = searchDirectories; isFixedForm = false; _encoding(Fortran::parser::Encoding::UTF_8); ```
These default settings are compatible with the current Flang driver. Further work is required in order for CompilerInvocation to read and map clang::driver::options to Fortran::parser::options.
Co-authored-by: Andrzej Warzynski <andrzej.warzynski@arm.com>
Differential Revision: https://reviews.llvm.org/D88381
show more ...
|