This patch moves the parsing of {Lang,CodeGen}Options from parseSimpleArgs to the original Parse{Lang,CodeGen}Args functions.
This ensures all marshalled LangOptions are being parsed after the call setLangDefaults, which in turn enables us to marshall LangOptions that somehow depend on the defaults. (In a future patch.)
Now, CodeGenOptions need to be parsed after LangOptions, because -cl-mad-enable (a CodeGenOpt) depends on the value of -cl-fast-relaxed-math and -cl-unsafe-math-optimizations (LangOpts).
Unfortunately, this removes the nice property that marshalled options get parsed in the exact order they appear in the .td file. Now we cannot be sure that a TableGen record referenced in ImpliedByAnyOf has already been parsed. This might cause an ordering issues (i.e. reading value of uninitialized variable). I plan to mitigate this by moving each XxxOpt group from parseSimpleArgs back to their original parsing function. With this setup, if an option from group A references option from group B in TableGen, the compiler will require us to make the CompilerInvocation member for B visible in the parsing function for A. That's where we notice that B didn't get parsed yet.
This replaces the conditional in CompilerInvocation::setLangDefaults.
The enum cases need to be fully qualified now, because we can't use NormalizedValuesScope<"LangOptions::LaxVectorConversionKind"> due to the "arbitrary" expression for default value.