This is a big refactor of the clang driver's option handling to use
the Visibility flags introduced in https://reviews.llvm.org/D157149.
There are a few distinct parts, but they can't really be split into
separate commits and still be made to compile.
- We split out some of the flags in ClangFlags to ClangVisibility. Note that this does not include any subtractive flags.
- We update the Flag definitions and OptIn/OptOut constructs in Options.td by hand.
- We introduce and use a script, update_options_td_flags, to ease migration of flag definitions in Options.td, and we run that on Options.td. I intend to remove this later, but I'm committing it so that downstream forks can use the script to simplify merging.
- We update calls to OptTable in the clang driver, cc1as, flang, and clangd to use the visibility APIs instead of Include/Exclude flags.
- We deprecate the Include/Exclude APIs and add a release note.
*if you are running into conflicts with this change:*
Note that https://reviews.llvm.org/D157150 may also be the culprit and
if so it should be handled first.
The script in clang/utils/update_options_td_flags.py can help. Take
the downstream side of all conflicts and then run the following:
% cd clang/include/clang/Driver % ../../../utils/update_options_td_flags.py Options.td > Options.td.new % mv Options.td.new Options.td
This will hopefully be sufficient, please take a look at the diff.
IMHO, the difference between Flags and Vis is still unclear. Lets take this opportunity to refine this. IIUC: