[flang][driver] Add options for unparsing

Authored by awarzynski on Feb 4 2021, 3:14 AM.


[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