This patch adds two debugging options in the new Flang driver (flang-new):
- -fdebug-unparse-no-sema
- -fdebug-dump-parse-tree-no-sema
Each of these options combines two options from the "throwaway" driver (left: f18, right: flang-new):
- -fdebug-uparse -fdebug-no-semantics --> -fdebug-unparse-no-sema
- -fdebug-dump-parse-tree -fdebug-no-semantics --> -fdebug-dump-parse-tree-no-sema
There are no plans to implement -fdebug-no-semantics in the new driver. Such option would be too powerful. Also, it would only make sense when combined with specific frontend actions (-fdebug-unparse and -fdebug-dump-parse-tree). Instead, this patch adds 2 options that are more specialised and 2 dedicated FrontendActions.
The new frontend actions are implemented in terms of a new abstract base action: PrescanAndSemaAction. This new base class was required so that we can have finer control over what steps within the frontend are executed:
- PrescanAction: run the _prescanner_
- PrescanAndSemaAction: run the _prescanner_ and the _parser_ (new in this patch)
- PrescanAndSemaAction: run the _prescanner_, _parser_ and run the _semantic checks_
This patch also introduces PrescanAndParseAction::BeginSourceFileAction. Apart from the semantic checks removed at the end, it is similar to PrescanAndSemaAction::BeginSourceFileAction.
Does this flag actually mean, parse and construct the parse-tree and unparse and stop?
While the current name is OK now, when the rest of the pipeline (codegen, linking etc) is there will it be an issue?