[flang] Make the plugin API independent of the driver internals
authorAndrzej Warzynski <andrzej.warzynski@arm.com>
Fri, 4 Mar 2022 13:05:21 +0000 (13:05 +0000)
committerAndrzej Warzynski <andrzej.warzynski@arm.com>
Fri, 22 Apr 2022 09:18:04 +0000 (09:18 +0000)
commit2186a4aea0e3e50e51b121d304889349c4e033ef
tree60b6a8c35a23ea0eb7e6b9a5d6099c6cb0bb91ad
parente69c21f75b233c69d454c03d5a9d99befe7ba76e
[flang] Make the plugin API independent of the driver internals

This patch adds a few new member methods in the `PluginParseTreeAction`
frontend action base class. With these new methods, the plugin API
becomes independent of the driver internals. In particular, plugin
writers no longer require the `CompilerInstance.h` header file to access
various driver data structures (instead, they can use newly added
hooks).

This change is desirable as `CompilerInstance.h` includes various
headers from Clang (both explicitly and implicitly). Some of these
header files are generated at build time (through TableGen) and
including them creates a dependency on some of Clang's build targets.
However, plugins in Flang should not depend on Clang build targets.

Note that plugins might still work fine most of the time, even without
this change and without adding Clang build targets as dependency in
plugin's CMake definition. Indeed, these Clang build targets are often
generated early in the build process. However, that's not guaranteed and
we did notice that on occasions plugins would fail to build.

Differential Revision: https://reviews.llvm.org/D120999
flang/docs/FlangDriver.md
flang/examples/FlangOmpReport/FlangOmpReport.cpp
flang/examples/FlangOmpReport/yaml_summarizer.py
flang/examples/PrintFlangFunctionNames/PrintFlangFunctionNames.cpp
flang/include/flang/Frontend/FrontendActions.h
flang/lib/Frontend/FrontendActions.cpp