This patch implements generation of remaining language options and tests it by performing parse-generate-parse round trip (on by default for assert builds, off otherwise).
This patch also correctly reports failures in parseSanitizerKinds, which is necessary for emitting diagnostics when an invalid sanitizer is passed to -fsanitize= during round-trip.
This patch also removes TableGen marshalling classes from two options:
- fsanitize_blacklist When parsing: it's first initialized via the generated code, but then also changed by manually written code, which is confusing.
- fopenmp When parsing: it's first initialized via generated code, but then conditionally changed by manually written code. This is also confusing. Moreover, we need to do some extra checks when generating it, which would be really cumbersome in TableGen. (Specifically, not emitting it when -fopenmp-simd was present.)
Can the caller use Diags.hasErrorOccurred() to avoid this change?