https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67304
--- Comment #4 from Iain Buclaw <ibuclaw at gdcproject dot org> --- I've just managed to have a brief time to think about this and look at how the generator currently works, I think the following should be doable, and should work with only one change to handle the fix-up of the opt index. - Add a new flag called NoCombine. - Options marked as such will not have flags or help combined in the code generator, and be given a separate index in the options array after the combined option itself. - NoCombine should alias for the generated OPT_xxx enumeration. - Back references should chain back to the original OPT_xxx entry in a linked way, as the binary search in find_opt will guarantee that the last entry will be matched first. - The combined option should have all languages so that the diagnostic "is a valid option for ..." references the correct frontends. Example of generated code in options.h: OPT_J = 115, /* -J */ /* OPT_J = 116, (CL_D) */ /* -J */ /* OPT_J = 117, (CL_Foo) */ /* -J */ And in options.c { "-J", "-J<directory> Put MODULE files in 'directory'.", 0, 0, NULL, NULL, N_OPTS, N_OPTS, 1, -1, CL_D | CL_Foo | CL_Fortran | CL_JOINED | CL_SEPARATE, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, CLVC_STRING, 0 }, { "-J", "-J <dir> Look for string imports in <dir>", 0, 0, NULL, NULL, OPT_J, 115, 1, -1, CL_D | CL_JOINED | CL_SEPARATE | CL_NOCOMBINE, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, CLVC_STRING, 0 }, { "-J", "Generate JSON file.", 0, 0, NULL, NULL, OPT_J, 116, 1, -1, CL_Foo | CL_NOCOMBINE, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, CLVC_BOOLEAN, 0 },