[flang][driver] Add forced form flags and -ffixed-line-length

Authored by FarisRehman on Jan 26 2021, 8:27 AM.


[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


FarisRehmanFeb 4 2021, 4:24 AM
Differential Revision
D95460: [flang][driver] Add forced form flags and -ffixed-line-length
rGfa2cdb81407b: [X86] Remove stale TODO comment. NFC.