[flang][driver] Add PrescanAction frontend action (nfc)
authorAndrzej Warzynski <andrzej.warzynski@arm.com>
Thu, 4 Feb 2021 13:06:43 +0000 (13:06 +0000)
committerAndrzej Warzynski <andrzej.warzynski@arm.com>
Thu, 4 Feb 2021 14:23:33 +0000 (14:23 +0000)
commitd06e94031bcdfa43512bf7b0cdfd4b4bad3ca4e1
tree799f7938856a320423625c6a6a3881eacdd0e039
parent75b2555d6ef4b6f3dd53a49186793f03f9280c84
[flang][driver] Add PrescanAction frontend action (nfc)

This new action encapsulates all actions that require the prescanner to
be run before proceeding with other processing. By adding this new
action, we are better equipped to control which actions _do_ run the
prescanner and which _do not_.

The following actions that require the prescanner are refactored to
inherit from `PrescanAction`:
  * `PrintPreprocessedAction`
  * `ParseSyntaxOnlyAction` .

New virtual method is introduced to facilitate all this:
  * `BeginSourceFileAction`
Like in Clang, this method is run inside `BeginSourceFile`. In other
words, it is invoked before `ExecuteAction` for the corresponding
frontend action is run. This method allows us to:
  * carry out any processing that is always required by the action (e.g.
    run the prescanner)
  * fine tune the settings/options on a file-by-file basis (e.g. to
    decide between fixed-form and free-form based on file extension)

This patch implements non-functional-changes.

Reviewed By: FarisRehman

Differential Revision: https://reviews.llvm.org/D95464
flang/include/flang/Frontend/FrontendAction.h
flang/include/flang/Frontend/FrontendActions.h
flang/lib/Frontend/CompilerInstance.cpp
flang/lib/Frontend/FrontendAction.cpp
flang/lib/Frontend/FrontendActions.cpp