]> granicus.if.org Git - clang/commitdiff
Driver: Switch Options.def to storing flags as a bitmask (instead of mangled
authorDaniel Dunbar <daniel@zuster.org>
Wed, 18 Nov 2009 17:42:34 +0000 (17:42 +0000)
committerDaniel Dunbar <daniel@zuster.org>
Wed, 18 Nov 2009 17:42:34 +0000 (17:42 +0000)
into a string).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89212 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/Driver/Options.def
lib/Driver/OptTable.cpp

index 2b66b3506b015864472785a071e8782683390d8e..292201cef49effa592ee661783997ce2af5abe25 100644 (file)
@@ -16,7 +16,7 @@
 #error "Define OPTION prior to including this file!"
 #endif
 
-// OPTION(NAME, ID, KIND, GROUP, ALIAS, FLAGS, PARAM, 
+// OPTION(NAME, ID, KIND, GROUP, ALIAS, FLAGS, PARAM,
 //        HELPTEXT, METAVARNAME)
 
 // The NAME value is the option name as a string.
@@ -24,7 +24,7 @@
 // The ID is the internal option id, which must be a valid
 // C++ identifier, and results in a clang::driver::options::OPT_XX
 // enum constant for XX.
-// 
+//
 // We want to unambiguously be able to refer to options from the
 // driver source code, for this reason the option name is mangled into
 // an id. This mangling isn't guaranteed to have an inverse, but for
 // The ALIAS value is the internal name of an aliased option, or
 // INVALID if the option is not an alias.
 
-// The PARAM value is a string containing option flags. Valid values:
-//  d: The option is a "driver" option, and should not be forwarded to
-//     gcc.
+// The PARAM value is a string containing a bitmask of option flags. Valid
+// values:
 //
-//  i: The option should not render the name when rendered as an
-//     input (i.e., the option is rendered as values).
+//  DriverOption: The option is a "driver" option, and should not be forwarded
+//     to gcc.
 //
-//  l: The option is a linker input.
+//  LinkerInput: The option is a linker input.
 //
-//  q: Don't report argument unused warnings for this option; this is
-//     useful for options like -static or -dynamic which a user may
-//     always end up passing, even if the platform defaults to (or
-//     only supports) that option.
+//  NoArgumentUnused: Don't report argument unused warnings for this option;
+//     this is useful for options like -static or -dynamic which a user may
+//     always end up passing, even if the platform defaults to (or only
+//     supports) that option.
 //
-//  u: The option is unsupported, and the driver will reject command
+//  Unsupported: The option is unsupported, and the driver will reject command
 //     lines that use it.
 //
-//  S: The option should be rendered separately, even if joined (only
-//     sensible on joined options).
+//  RenderAsInput: The option should not render the name when rendered as an
+//     input (i.e., the option is rendered as values).
 //
-//  J: The option should be rendered joined, even if separate (only
+//  RenderJoined: The option should be rendered joined, even if separate (only
 //     sensible on single value separate options).
+//
+//  RenderSeparate: The option should be rendered separately, even if joined
+//     (only sensible on joined options).
 
 // The PARAM value is an arbitrary integer parameter; currently
 // this is only used for specifying the number of arguments for
 /////////
 // Groups
 
-OPTION("<I group>", I_Group, Group, INVALID, INVALID, "", 0, 0, 0)
-OPTION("<M group>", M_Group, Group, INVALID, INVALID, "", 0, 0, 0)
-OPTION("<T group>", T_Group, Group, INVALID, INVALID, "", 0, 0, 0)
-OPTION("<O group>", O_Group, Group, INVALID, INVALID, "", 0, 0, 0)
-OPTION("<W group>", W_Group, Group, INVALID, INVALID, "", 0, 0, 0)
-OPTION("<X group>", X_Group, Group, INVALID, INVALID, "", 0, 0, 0)
-OPTION("<a group>", a_Group, Group, INVALID, INVALID, "", 0, 0, 0)
-OPTION("<d group>", d_Group, Group, INVALID, INVALID, "", 0, 0, 0)
-OPTION("<f group>", f_Group, Group, INVALID, INVALID, "", 0, 0, 0)
-OPTION("<g group>", g_Group, Group, INVALID, INVALID, "", 0, 0, 0)
-OPTION("<i group>", i_Group, Group, INVALID, INVALID, "", 0, 0, 0)
-OPTION("<clang i group>", clang_i_Group, Group, i_Group, INVALID, "", 0, 0, 0)
-OPTION("<m group>", m_Group, Group, INVALID, INVALID, "", 0, 0, 0)
-OPTION("<m x86 features group>", m_x86_Features_Group, Group, INVALID, INVALID, "", 0, 0, 0)
-OPTION("<u group>", u_Group, Group, INVALID, INVALID, "", 0, 0, 0)
+OPTION("<I group>", I_Group, Group, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("<M group>", M_Group, Group, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("<T group>", T_Group, Group, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("<O group>", O_Group, Group, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("<W group>", W_Group, Group, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("<X group>", X_Group, Group, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("<a group>", a_Group, Group, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("<d group>", d_Group, Group, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("<f group>", f_Group, Group, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("<g group>", g_Group, Group, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("<i group>", i_Group, Group, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("<clang i group>", clang_i_Group, Group, i_Group, INVALID, 0, 0, 0, 0)
+OPTION("<m group>", m_Group, Group, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("<m x86 features group>", m_x86_Features_Group, Group, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("<u group>", u_Group, Group, INVALID, INVALID, 0, 0, 0, 0)
 
-OPTION("<pedantic group>", pedantic_Group, Group, INVALID, INVALID, "", 0, 0, 0)
+OPTION("<pedantic group>", pedantic_Group, Group, INVALID, INVALID, 0, 0, 0, 0)
 
 // Temporary groups for clang options which we know we don't support,
 // but don't want to verbosely warn the user about.
-OPTION("<clang ignored f group>", clang_ignored_f_Group, Group, f_Group, 
-       INVALID, "", 0, 0, 0)
-OPTION("<clang ignored m group>", clang_ignored_m_Group, Group, m_Group, 
-       INVALID, "", 0, 0, 0)
+OPTION("<clang ignored f group>", clang_ignored_f_Group, Group, f_Group,
+       INVALID, 0, 0, 0, 0)
+OPTION("<clang ignored m group>", clang_ignored_m_Group, Group, m_Group,
+       INVALID, 0, 0, 0, 0)
 
 //////////
 // Options
 
-OPTION("-###", _HASH_HASH_HASH, Flag, INVALID, INVALID, "d", 0, 
+OPTION("-###", _HASH_HASH_HASH, Flag, INVALID, INVALID, DriverOption, 0,
        "Print the commands to run for this compilation", 0)
-OPTION("--CLASSPATH=", _CLASSPATH_EQ, Joined, INVALID, fclasspath_EQ, "", 0, 0, 0)
-OPTION("--CLASSPATH", _CLASSPATH, Separate, INVALID, fclasspath_EQ, "J", 0, 0, 0)
-OPTION("--all-warnings", _all_warnings, Flag, INVALID, Wall, "", 0, 0, 0)
-OPTION("--analyze-auto", _analyze_auto, Flag, INVALID, INVALID, "d", 0, 0, 0)
-OPTION("--analyzer-no-default-checks", _analyzer_no_default_checks, Flag, INVALID, INVALID, "d", 0, 0, 0)
-OPTION("--analyzer-output", _analyzer_output, JoinedOrSeparate, INVALID, INVALID, "d", 0, 0, 0)
-OPTION("--analyze", _analyze, Flag, INVALID, INVALID, "d", 0, 
+OPTION("--CLASSPATH=", _CLASSPATH_EQ, Joined, INVALID, fclasspath_EQ, 0, 0, 0, 0)
+OPTION("--CLASSPATH", _CLASSPATH, Separate, INVALID, fclasspath_EQ, RenderJoined, 0, 0, 0)
+OPTION("--all-warnings", _all_warnings, Flag, INVALID, Wall, 0, 0, 0, 0)
+OPTION("--analyze-auto", _analyze_auto, Flag, INVALID, INVALID, DriverOption, 0, 0, 0)
+OPTION("--analyzer-no-default-checks", _analyzer_no_default_checks, Flag, INVALID, INVALID, DriverOption, 0, 0, 0)
+OPTION("--analyzer-output", _analyzer_output, JoinedOrSeparate, INVALID, INVALID, DriverOption, 0, 0, 0)
+OPTION("--analyze", _analyze, Flag, INVALID, INVALID, DriverOption, 0,
        "Run the static analyzer", 0)
-OPTION("--ansi", _ansi, Flag, INVALID, ansi, "", 0, 0, 0)
-OPTION("--assemble", _assemble, Flag, INVALID, S, "", 0, 0, 0)
-OPTION("--assert=", _assert_EQ, Joined, INVALID, A, "S", 0, 0, 0)
-OPTION("--assert", _assert, Separate, INVALID, A, "", 0, 0, 0)
-OPTION("--bootclasspath=", _bootclasspath_EQ, Joined, INVALID, fbootclasspath_EQ, "", 0, 0, 0)
-OPTION("--bootclasspath", _bootclasspath, Separate, INVALID, fbootclasspath_EQ, "J", 0, 0, 0)
-OPTION("--classpath=", _classpath_EQ, Joined, INVALID, fclasspath_EQ, "", 0, 0, 0)
-OPTION("--classpath", _classpath, Separate, INVALID, fclasspath_EQ, "J", 0, 0, 0)
-OPTION("--combine", _combine, Flag, INVALID, combine, "u", 0, 0, 0)
-OPTION("--comments-in-macros", _comments_in_macros, Flag, INVALID, CC, "", 0, 0, 0)
-OPTION("--comments", _comments, Flag, INVALID, C, "", 0, 0, 0)
-OPTION("--compile", _compile, Flag, INVALID, c, "", 0, 0, 0)
-OPTION("--constant-cfstrings", _constant_cfstrings, Flag, INVALID, INVALID, "", 0, 0, 0)
-OPTION("--coverage", _coverage, Flag, INVALID, coverage, "", 0, 0, 0)
-OPTION("--debug=", _debug_EQ, Joined, INVALID, g_Flag, "u", 0, 0, 0)
-OPTION("--debug", _debug, Flag, INVALID, g_Flag, "u", 0, 0, 0)
-OPTION("--define-macro=", _define_macro_EQ, Joined, INVALID, D, "", 0, 0, 0)
-OPTION("--define-macro", _define_macro, Separate, INVALID, D, "J", 0, 0, 0)
-OPTION("--dependencies", _dependencies, Flag, INVALID, M, "", 0, 0, 0)
-OPTION("--encoding=", _encoding_EQ, Joined, INVALID, fencoding_EQ, "", 0, 0, 0)
-OPTION("--encoding", _encoding, Separate, INVALID, fencoding_EQ, "J", 0, 0, 0)
-OPTION("--entry", _entry, Flag, INVALID, e, "", 0, 0, 0)
-OPTION("--extdirs=", _extdirs_EQ, Joined, INVALID, fextdirs_EQ, "", 0, 0, 0)
-OPTION("--extdirs", _extdirs, Separate, INVALID, fextdirs_EQ, "J", 0, 0, 0)
-OPTION("--extra-warnings", _extra_warnings, Flag, INVALID, W_Joined, "", 0, 0, 0)
-OPTION("--for-linker=", _for_linker_EQ, Joined, INVALID, Xlinker, "liS", 0, 0, 0)
-OPTION("--for-linker", _for_linker, Separate, INVALID, Xlinker, "li", 0, 0, 0)
-OPTION("--force-link=", _force_link_EQ, Joined, INVALID, u, "S", 0, 0, 0)
-OPTION("--force-link", _force_link, Separate, INVALID, u, "", 0, 0, 0)
-OPTION("--help-hidden", _help_hidden, Flag, INVALID, INVALID, "", 0, 0, 0)
-OPTION("--help", _help, Flag, INVALID, INVALID, "", 0, 
+OPTION("--ansi", _ansi, Flag, INVALID, ansi, 0, 0, 0, 0)
+OPTION("--assemble", _assemble, Flag, INVALID, S, 0, 0, 0, 0)
+OPTION("--assert=", _assert_EQ, Joined, INVALID, A, RenderSeparate, 0, 0, 0)
+OPTION("--assert", _assert, Separate, INVALID, A, 0, 0, 0, 0)
+OPTION("--bootclasspath=", _bootclasspath_EQ, Joined, INVALID, fbootclasspath_EQ, 0, 0, 0, 0)
+OPTION("--bootclasspath", _bootclasspath, Separate, INVALID, fbootclasspath_EQ, RenderJoined, 0, 0, 0)
+OPTION("--classpath=", _classpath_EQ, Joined, INVALID, fclasspath_EQ, 0, 0, 0, 0)
+OPTION("--classpath", _classpath, Separate, INVALID, fclasspath_EQ, RenderJoined, 0, 0, 0)
+OPTION("--combine", _combine, Flag, INVALID, combine, Unsupported, 0, 0, 0)
+OPTION("--comments-in-macros", _comments_in_macros, Flag, INVALID, CC, 0, 0, 0, 0)
+OPTION("--comments", _comments, Flag, INVALID, C, 0, 0, 0, 0)
+OPTION("--compile", _compile, Flag, INVALID, c, 0, 0, 0, 0)
+OPTION("--constant-cfstrings", _constant_cfstrings, Flag, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("--coverage", _coverage, Flag, INVALID, coverage, 0, 0, 0, 0)
+OPTION("--debug=", _debug_EQ, Joined, INVALID, g_Flag, Unsupported, 0, 0, 0)
+OPTION("--debug", _debug, Flag, INVALID, g_Flag, Unsupported, 0, 0, 0)
+OPTION("--define-macro=", _define_macro_EQ, Joined, INVALID, D, 0, 0, 0, 0)
+OPTION("--define-macro", _define_macro, Separate, INVALID, D, RenderJoined, 0, 0, 0)
+OPTION("--dependencies", _dependencies, Flag, INVALID, M, 0, 0, 0, 0)
+OPTION("--encoding=", _encoding_EQ, Joined, INVALID, fencoding_EQ, 0, 0, 0, 0)
+OPTION("--encoding", _encoding, Separate, INVALID, fencoding_EQ, RenderJoined, 0, 0, 0)
+OPTION("--entry", _entry, Flag, INVALID, e, 0, 0, 0, 0)
+OPTION("--extdirs=", _extdirs_EQ, Joined, INVALID, fextdirs_EQ, 0, 0, 0, 0)
+OPTION("--extdirs", _extdirs, Separate, INVALID, fextdirs_EQ, RenderJoined, 0, 0, 0)
+OPTION("--extra-warnings", _extra_warnings, Flag, INVALID, W_Joined, 0, 0, 0, 0)
+OPTION("--for-linker=", _for_linker_EQ, Joined, INVALID, Xlinker, LinkerInput | RenderAsInput | RenderSeparate, 0, 0, 0)
+OPTION("--for-linker", _for_linker, Separate, INVALID, Xlinker, LinkerInput | RenderAsInput, 0, 0, 0)
+OPTION("--force-link=", _force_link_EQ, Joined, INVALID, u, RenderSeparate, 0, 0, 0)
+OPTION("--force-link", _force_link, Separate, INVALID, u, 0, 0, 0, 0)
+OPTION("--help-hidden", _help_hidden, Flag, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("--help", _help, Flag, INVALID, INVALID, 0, 0,
        "Display available options", 0)
-OPTION("--imacros=", _imacros_EQ, Joined, INVALID, imacros, "S", 0, 0, 0)
-OPTION("--imacros", _imacros, Separate, INVALID, imacros, "", 0, 0, 0)
-OPTION("--include-barrier", _include_barrier, Flag, INVALID, I_, "", 0, 0, 0)
-OPTION("--include-directory-after=", _include_directory_after_EQ, Joined, INVALID, idirafter, "S", 0, 0, 0)
-OPTION("--include-directory-after", _include_directory_after, Separate, INVALID, idirafter, "", 0, 0, 0)
-OPTION("--include-directory=", _include_directory_EQ, Joined, INVALID, I, "", 0, 0, 0)
-OPTION("--include-directory", _include_directory, Separate, INVALID, I, "J", 0, 0, 0)
-OPTION("--include-prefix=", _include_prefix_EQ, Joined, INVALID, iprefix, "S", 0, 0, 0)
-OPTION("--include-prefix", _include_prefix, Separate, INVALID, iprefix, "", 0, 0, 0)
-OPTION("--include-with-prefix-after=", _include_with_prefix_after_EQ, Joined, INVALID, iwithprefix, "S", 0, 0, 0)
-OPTION("--include-with-prefix-after", _include_with_prefix_after, Separate, INVALID, iwithprefix, "", 0, 0, 0)
-OPTION("--include-with-prefix-before=", _include_with_prefix_before_EQ, Joined, INVALID, iwithprefixbefore, "S", 0, 0, 0)
-OPTION("--include-with-prefix-before", _include_with_prefix_before, Separate, INVALID, iwithprefixbefore, "", 0, 0, 0)
-OPTION("--include-with-prefix=", _include_with_prefix_EQ, Joined, INVALID, iwithprefix, "S", 0, 0, 0)
-OPTION("--include-with-prefix", _include_with_prefix, Separate, INVALID, iwithprefix, "", 0, 0, 0)
-OPTION("--include=", _include_EQ, Joined, INVALID, include, "S", 0, 0, 0)
-OPTION("--include", _include, Separate, INVALID, include, "", 0, 0, 0)
-OPTION("--language=", _language_EQ, Joined, INVALID, x, "S", 0, 0, 0)
-OPTION("--language", _language, Separate, INVALID, x, "", 0, 0, 0)
-OPTION("--library-directory=", _library_directory_EQ, Joined, INVALID, L, "S", 0, 0, 0)
-OPTION("--library-directory", _library_directory, Separate, INVALID, L, "", 0, 0, 0)
-OPTION("--machine-=", _machine__EQ, Joined, INVALID, m_Joined, "u", 0, 0, 0)
-OPTION("--machine-", _machine_, Joined, INVALID, m_Joined, "u", 0, 0, 0)
-OPTION("--machine=", _machine_EQ, Joined, INVALID, m_Joined, "", 0, 0, 0)
-OPTION("--machine", _machine, Separate, INVALID, m_Joined, "J", 0, 0, 0)
-OPTION("--no-integrated-cpp", _no_integrated_cpp, Flag, INVALID, no_integrated_cpp, "", 0, 0, 0)
-OPTION("--no-line-commands", _no_line_commands, Flag, INVALID, P, "", 0, 0, 0)
-OPTION("--no-standard-includes", _no_standard_includes, Flag, INVALID, nostdinc, "", 0, 0, 0)
-OPTION("--no-standard-libraries", _no_standard_libraries, Flag, INVALID, nostdlib, "", 0, 0, 0)
-OPTION("--no-undefined", _no_undefined, Flag, INVALID, INVALID, "l", 0, 0, 0)
-OPTION("--no-warnings", _no_warnings, Flag, INVALID, w, "", 0, 0, 0)
-OPTION("--optimize=", _optimize_EQ, Joined, INVALID, O, "u", 0, 0, 0)
-OPTION("--optimize", _optimize, Flag, INVALID, O, "u", 0, 0, 0)
-OPTION("--output-class-directory=", _output_class_directory_EQ, Joined, INVALID, foutput_class_dir_EQ, "", 0, 0, 0)
-OPTION("--output-class-directory", _output_class_directory, Separate, INVALID, foutput_class_dir_EQ, "J", 0, 0, 0)
-OPTION("--output=", _output_EQ, Joined, INVALID, o, "S", 0, 0, 0)
-OPTION("--output", _output, Separate, INVALID, o, "", 0, 0, 0)
-OPTION("--param=", _param_EQ, Joined, INVALID, _param, "S", 0, 0, 0)
-OPTION("--param", _param, Separate, INVALID, INVALID, "", 0, 0, 0)
-OPTION("--pass-exit-codes", _pass_exit_codes, Flag, INVALID, pass_exit_codes, "", 0, 0, 0)
-OPTION("--pedantic-errors", _pedantic_errors, Flag, INVALID, pedantic_errors, "", 0, 0, 0)
-OPTION("--pedantic", _pedantic, Flag, INVALID, pedantic, "", 0, 0, 0)
-OPTION("--pipe", _pipe, Flag, INVALID, pipe, "d", 0, 0, 0)
-OPTION("--prefix=", _prefix_EQ, Joined, INVALID, B, "S", 0, 0, 0)
-OPTION("--prefix", _prefix, Separate, INVALID, B, "", 0, 0, 0)
-OPTION("--preprocess", _preprocess, Flag, INVALID, E, "", 0, 0, 0)
-OPTION("--print-file-name=", _print_file_name_EQ, Joined, INVALID, print_file_name_EQ, "", 0, 0, 0)
-OPTION("--print-file-name", _print_file_name, Separate, INVALID, print_file_name_EQ, "", 0, 0, 0)
-OPTION("--print-libgcc-file-name", _print_libgcc_file_name, Flag, INVALID, print_libgcc_file_name, "", 0, 0, 0)
-OPTION("--print-missing-file-dependencies", _print_missing_file_dependencies, Flag, INVALID, MG, "", 0, 0, 0)
-OPTION("--print-multi-directory", _print_multi_directory, Flag, INVALID, print_multi_directory, "", 0, 0, 0)
-OPTION("--print-multi-lib", _print_multi_lib, Flag, INVALID, print_multi_lib, "", 0, 0, 0)
-OPTION("--print-multi-os-directory", _print_multi_os_directory, Flag, INVALID, print_multi_os_directory, "", 0, 0, 0)
-OPTION("--print-prog-name=", _print_prog_name_EQ, Joined, INVALID, print_prog_name_EQ, "", 0, 0, 0)
-OPTION("--print-prog-name", _print_prog_name, Separate, INVALID, print_prog_name_EQ, "", 0, 0, 0)
-OPTION("--print-search-dirs", _print_search_dirs, Flag, INVALID, print_search_dirs, "", 0, 0, 0)
-OPTION("--profile-blocks", _profile_blocks, Flag, INVALID, a, "", 0, 0, 0)
-OPTION("--profile", _profile, Flag, INVALID, p, "", 0, 0, 0)
-OPTION("--relocatable-pch", _relocatable_pch, Flag, INVALID, INVALID, "", 0, 
+OPTION("--imacros=", _imacros_EQ, Joined, INVALID, imacros, RenderSeparate, 0, 0, 0)
+OPTION("--imacros", _imacros, Separate, INVALID, imacros, 0, 0, 0, 0)
+OPTION("--include-barrier", _include_barrier, Flag, INVALID, I_, 0, 0, 0, 0)
+OPTION("--include-directory-after=", _include_directory_after_EQ, Joined, INVALID, idirafter, RenderSeparate, 0, 0, 0)
+OPTION("--include-directory-after", _include_directory_after, Separate, INVALID, idirafter, 0, 0, 0, 0)
+OPTION("--include-directory=", _include_directory_EQ, Joined, INVALID, I, 0, 0, 0, 0)
+OPTION("--include-directory", _include_directory, Separate, INVALID, I, RenderJoined, 0, 0, 0)
+OPTION("--include-prefix=", _include_prefix_EQ, Joined, INVALID, iprefix, RenderSeparate, 0, 0, 0)
+OPTION("--include-prefix", _include_prefix, Separate, INVALID, iprefix, 0, 0, 0, 0)
+OPTION("--include-with-prefix-after=", _include_with_prefix_after_EQ, Joined, INVALID, iwithprefix, RenderSeparate, 0, 0, 0)
+OPTION("--include-with-prefix-after", _include_with_prefix_after, Separate, INVALID, iwithprefix, 0, 0, 0, 0)
+OPTION("--include-with-prefix-before=", _include_with_prefix_before_EQ, Joined, INVALID, iwithprefixbefore, RenderSeparate, 0, 0, 0)
+OPTION("--include-with-prefix-before", _include_with_prefix_before, Separate, INVALID, iwithprefixbefore, 0, 0, 0, 0)
+OPTION("--include-with-prefix=", _include_with_prefix_EQ, Joined, INVALID, iwithprefix, RenderSeparate, 0, 0, 0)
+OPTION("--include-with-prefix", _include_with_prefix, Separate, INVALID, iwithprefix, 0, 0, 0, 0)
+OPTION("--include=", _include_EQ, Joined, INVALID, include, RenderSeparate, 0, 0, 0)
+OPTION("--include", _include, Separate, INVALID, include, 0, 0, 0, 0)
+OPTION("--language=", _language_EQ, Joined, INVALID, x, RenderSeparate, 0, 0, 0)
+OPTION("--language", _language, Separate, INVALID, x, 0, 0, 0, 0)
+OPTION("--library-directory=", _library_directory_EQ, Joined, INVALID, L, RenderSeparate, 0, 0, 0)
+OPTION("--library-directory", _library_directory, Separate, INVALID, L, 0, 0, 0, 0)
+OPTION("--machine-=", _machine__EQ, Joined, INVALID, m_Joined, Unsupported, 0, 0, 0)
+OPTION("--machine-", _machine_, Joined, INVALID, m_Joined, Unsupported, 0, 0, 0)
+OPTION("--machine=", _machine_EQ, Joined, INVALID, m_Joined, 0, 0, 0, 0)
+OPTION("--machine", _machine, Separate, INVALID, m_Joined, RenderJoined, 0, 0, 0)
+OPTION("--no-integrated-cpp", _no_integrated_cpp, Flag, INVALID, no_integrated_cpp, 0, 0, 0, 0)
+OPTION("--no-line-commands", _no_line_commands, Flag, INVALID, P, 0, 0, 0, 0)
+OPTION("--no-standard-includes", _no_standard_includes, Flag, INVALID, nostdinc, 0, 0, 0, 0)
+OPTION("--no-standard-libraries", _no_standard_libraries, Flag, INVALID, nostdlib, 0, 0, 0, 0)
+OPTION("--no-undefined", _no_undefined, Flag, INVALID, INVALID, LinkerInput, 0, 0, 0)
+OPTION("--no-warnings", _no_warnings, Flag, INVALID, w, 0, 0, 0, 0)
+OPTION("--optimize=", _optimize_EQ, Joined, INVALID, O, Unsupported, 0, 0, 0)
+OPTION("--optimize", _optimize, Flag, INVALID, O, Unsupported, 0, 0, 0)
+OPTION("--output-class-directory=", _output_class_directory_EQ, Joined, INVALID, foutput_class_dir_EQ, 0, 0, 0, 0)
+OPTION("--output-class-directory", _output_class_directory, Separate, INVALID, foutput_class_dir_EQ, RenderJoined, 0, 0, 0)
+OPTION("--output=", _output_EQ, Joined, INVALID, o, RenderSeparate, 0, 0, 0)
+OPTION("--output", _output, Separate, INVALID, o, 0, 0, 0, 0)
+OPTION("--param=", _param_EQ, Joined, INVALID, _param, RenderSeparate, 0, 0, 0)
+OPTION("--param", _param, Separate, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("--pass-exit-codes", _pass_exit_codes, Flag, INVALID, pass_exit_codes, 0, 0, 0, 0)
+OPTION("--pedantic-errors", _pedantic_errors, Flag, INVALID, pedantic_errors, 0, 0, 0, 0)
+OPTION("--pedantic", _pedantic, Flag, INVALID, pedantic, 0, 0, 0, 0)
+OPTION("--pipe", _pipe, Flag, INVALID, pipe, DriverOption, 0, 0, 0)
+OPTION("--prefix=", _prefix_EQ, Joined, INVALID, B, RenderSeparate, 0, 0, 0)
+OPTION("--prefix", _prefix, Separate, INVALID, B, 0, 0, 0, 0)
+OPTION("--preprocess", _preprocess, Flag, INVALID, E, 0, 0, 0, 0)
+OPTION("--print-file-name=", _print_file_name_EQ, Joined, INVALID, print_file_name_EQ, 0, 0, 0, 0)
+OPTION("--print-file-name", _print_file_name, Separate, INVALID, print_file_name_EQ, 0, 0, 0, 0)
+OPTION("--print-libgcc-file-name", _print_libgcc_file_name, Flag, INVALID, print_libgcc_file_name, 0, 0, 0, 0)
+OPTION("--print-missing-file-dependencies", _print_missing_file_dependencies, Flag, INVALID, MG, 0, 0, 0, 0)
+OPTION("--print-multi-directory", _print_multi_directory, Flag, INVALID, print_multi_directory, 0, 0, 0, 0)
+OPTION("--print-multi-lib", _print_multi_lib, Flag, INVALID, print_multi_lib, 0, 0, 0, 0)
+OPTION("--print-multi-os-directory", _print_multi_os_directory, Flag, INVALID, print_multi_os_directory, 0, 0, 0, 0)
+OPTION("--print-prog-name=", _print_prog_name_EQ, Joined, INVALID, print_prog_name_EQ, 0, 0, 0, 0)
+OPTION("--print-prog-name", _print_prog_name, Separate, INVALID, print_prog_name_EQ, 0, 0, 0, 0)
+OPTION("--print-search-dirs", _print_search_dirs, Flag, INVALID, print_search_dirs, 0, 0, 0, 0)
+OPTION("--profile-blocks", _profile_blocks, Flag, INVALID, a, 0, 0, 0, 0)
+OPTION("--profile", _profile, Flag, INVALID, p, 0, 0, 0, 0)
+OPTION("--relocatable-pch", _relocatable_pch, Flag, INVALID, INVALID, 0, 0,
        "Build a relocatable precompiled header", 0)
-OPTION("--resource=", _resource_EQ, Joined, INVALID, fcompile_resource_EQ, "", 0, 0, 0)
-OPTION("--resource", _resource, Separate, INVALID, fcompile_resource_EQ, "J", 0, 0, 0)
-OPTION("--save-temps", _save_temps, Flag, INVALID, save_temps, "", 0, 0, 0)
-OPTION("--shared", _shared, Flag, INVALID, shared, "", 0, 0, 0)
-OPTION("--signed-char", _signed_char, Flag, INVALID, fsigned_char, "", 0, 0, 0)
-OPTION("--specs=", _specs_EQ, Joined, INVALID, specs_EQ, "u", 0, 0, 0)
-OPTION("--specs", _specs, Separate, INVALID, specs_EQ, "uJ", 0, 0, 0)
-OPTION("--static", _static, Flag, INVALID, static, "", 0, 0, 0)
-OPTION("--std=", _std_EQ, Joined, INVALID, std_EQ, "", 0, 0, 0)
-OPTION("--std", _std, Separate, INVALID, std_EQ, "J", 0, 0, 0)
-OPTION("--sysroot=", _sysroot_EQ, Joined, INVALID, INVALID, "", 0, 0, 0)
-OPTION("--sysroot", _sysroot, Separate, INVALID, _sysroot_EQ, "J", 0, 0, 0)
-OPTION("--target-help", _target_help, Flag, INVALID, INVALID, "", 0, 0, 0)
-OPTION("--trace-includes", _trace_includes, Flag, INVALID, H, "", 0, 0, 0)
-OPTION("--traditional-cpp", _traditional_cpp, Flag, INVALID, traditional_cpp, "", 0, 0, 0)
-OPTION("--traditional", _traditional, Flag, INVALID, traditional, "", 0, 0, 0)
-OPTION("--trigraphs", _trigraphs, Flag, INVALID, trigraphs, "", 0, 0, 0)
-OPTION("--undefine-macro=", _undefine_macro_EQ, Joined, INVALID, U, "", 0, 0, 0)
-OPTION("--undefine-macro", _undefine_macro, Separate, INVALID, U, "J", 0, 0, 0)
-OPTION("--unsigned-char", _unsigned_char, Flag, INVALID, funsigned_char, "", 0, 0, 0)
-OPTION("--user-dependencies", _user_dependencies, Flag, INVALID, MM, "", 0, 0, 0)
-OPTION("--verbose", _verbose, Flag, INVALID, v, "", 0, 0, 0)
-OPTION("--version", _version, Flag, INVALID, INVALID, "", 0, 0, 0)
-OPTION("--warn-=", _warn__EQ, Joined, INVALID, W_Joined, "u", 0, 0, 0)
-OPTION("--warn-", _warn_, Joined, INVALID, W_Joined, "u", 0, 0, 0)
-OPTION("--write-dependencies", _write_dependencies, Flag, INVALID, MD, "", 0, 0, 0)
-OPTION("--write-user-dependencies", _write_user_dependencies, Flag, INVALID, MMD, "", 0, 0, 0)
-OPTION("--", _, Joined, INVALID, f, "u", 0, 0, 0)
-OPTION("-A", A, JoinedOrSeparate, INVALID, INVALID, "", 0, 0, 0)
-OPTION("-B", B, JoinedOrSeparate, INVALID, INVALID, "u", 0, 0, 0)
-OPTION("-CC", CC, Flag, INVALID, INVALID, "", 0, 0, 0)
-OPTION("-C", C, Flag, INVALID, INVALID, "", 0, 0, 0)
-OPTION("-D", D, JoinedOrSeparate, INVALID, INVALID, "", 0, 0, 0)
-OPTION("-E", E, Flag, INVALID, INVALID, "d", 0, 
+OPTION("--resource=", _resource_EQ, Joined, INVALID, fcompile_resource_EQ, 0, 0, 0, 0)
+OPTION("--resource", _resource, Separate, INVALID, fcompile_resource_EQ, RenderJoined, 0, 0, 0)
+OPTION("--save-temps", _save_temps, Flag, INVALID, save_temps, 0, 0, 0, 0)
+OPTION("--shared", _shared, Flag, INVALID, shared, 0, 0, 0, 0)
+OPTION("--signed-char", _signed_char, Flag, INVALID, fsigned_char, 0, 0, 0, 0)
+OPTION("--specs=", _specs_EQ, Joined, INVALID, specs_EQ, Unsupported, 0, 0, 0)
+OPTION("--specs", _specs, Separate, INVALID, specs_EQ, RenderJoined | Unsupported, 0, 0, 0)
+OPTION("--static", _static, Flag, INVALID, static, 0, 0, 0, 0)
+OPTION("--std=", _std_EQ, Joined, INVALID, std_EQ, 0, 0, 0, 0)
+OPTION("--std", _std, Separate, INVALID, std_EQ, RenderJoined, 0, 0, 0)
+OPTION("--sysroot=", _sysroot_EQ, Joined, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("--sysroot", _sysroot, Separate, INVALID, _sysroot_EQ, RenderJoined, 0, 0, 0)
+OPTION("--target-help", _target_help, Flag, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("--trace-includes", _trace_includes, Flag, INVALID, H, 0, 0, 0, 0)
+OPTION("--traditional-cpp", _traditional_cpp, Flag, INVALID, traditional_cpp, 0, 0, 0, 0)
+OPTION("--traditional", _traditional, Flag, INVALID, traditional, 0, 0, 0, 0)
+OPTION("--trigraphs", _trigraphs, Flag, INVALID, trigraphs, 0, 0, 0, 0)
+OPTION("--undefine-macro=", _undefine_macro_EQ, Joined, INVALID, U, 0, 0, 0, 0)
+OPTION("--undefine-macro", _undefine_macro, Separate, INVALID, U, RenderJoined, 0, 0, 0)
+OPTION("--unsigned-char", _unsigned_char, Flag, INVALID, funsigned_char, 0, 0, 0, 0)
+OPTION("--user-dependencies", _user_dependencies, Flag, INVALID, MM, 0, 0, 0, 0)
+OPTION("--verbose", _verbose, Flag, INVALID, v, 0, 0, 0, 0)
+OPTION("--version", _version, Flag, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("--warn-=", _warn__EQ, Joined, INVALID, W_Joined, Unsupported, 0, 0, 0)
+OPTION("--warn-", _warn_, Joined, INVALID, W_Joined, Unsupported, 0, 0, 0)
+OPTION("--write-dependencies", _write_dependencies, Flag, INVALID, MD, 0, 0, 0, 0)
+OPTION("--write-user-dependencies", _write_user_dependencies, Flag, INVALID, MMD, 0, 0, 0, 0)
+OPTION("--", _, Joined, INVALID, f, Unsupported, 0, 0, 0)
+OPTION("-A", A, JoinedOrSeparate, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("-B", B, JoinedOrSeparate, INVALID, INVALID, Unsupported, 0, 0, 0)
+OPTION("-CC", CC, Flag, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("-C", C, Flag, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("-D", D, JoinedOrSeparate, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("-E", E, Flag, INVALID, INVALID, DriverOption, 0,
        "Only run the preprocessor", 0)
-OPTION("-F", F, JoinedOrSeparate, INVALID, INVALID, "", 0, 0, 0)
-OPTION("-H", H, Flag, INVALID, INVALID, "", 0, 0, 0)
-OPTION("-I-", I_, Flag, I_Group, INVALID, "", 0, 0, 0)
-OPTION("-I", I, JoinedOrSeparate, I_Group, INVALID, "", 0, 0, 0)
-OPTION("-L", L, JoinedOrSeparate, INVALID, INVALID, "", 0, 0, 0)
-OPTION("-MD", MD, Flag, M_Group, INVALID, "", 0, 0, 0)
-OPTION("-MF", MF, JoinedOrSeparate, M_Group, INVALID, "", 0, 0, 0)
-OPTION("-MG", MG, Flag, M_Group, INVALID, "", 0, 0, 0)
-OPTION("-MMD", MMD, Flag, M_Group, INVALID, "", 0, 0, 0)
-OPTION("-MM", MM, Flag, M_Group, INVALID, "", 0, 0, 0)
-OPTION("-MP", MP, Flag, M_Group, INVALID, "", 0, 0, 0)
-OPTION("-MQ", MQ, JoinedOrSeparate, M_Group, INVALID, "", 0, 0, 0)
-OPTION("-MT", MT, JoinedOrSeparate, M_Group, INVALID, "", 0, 0, 0)
-OPTION("-Mach", Mach, Flag, INVALID, INVALID, "", 0, 0, 0)
-OPTION("-M", M, Flag, M_Group, INVALID, "", 0, 0, 0)
-OPTION("-O4", O4, Joined, O_Group, INVALID, "", 0, 0, 0)
-OPTION("-ObjC++", ObjCXX, Flag, INVALID, INVALID, "d", 0, 
+OPTION("-F", F, JoinedOrSeparate, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("-H", H, Flag, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("-I-", I_, Flag, I_Group, INVALID, 0, 0, 0, 0)
+OPTION("-I", I, JoinedOrSeparate, I_Group, INVALID, 0, 0, 0, 0)
+OPTION("-L", L, JoinedOrSeparate, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("-MD", MD, Flag, M_Group, INVALID, 0, 0, 0, 0)
+OPTION("-MF", MF, JoinedOrSeparate, M_Group, INVALID, 0, 0, 0, 0)
+OPTION("-MG", MG, Flag, M_Group, INVALID, 0, 0, 0, 0)
+OPTION("-MMD", MMD, Flag, M_Group, INVALID, 0, 0, 0, 0)
+OPTION("-MM", MM, Flag, M_Group, INVALID, 0, 0, 0, 0)
+OPTION("-MP", MP, Flag, M_Group, INVALID, 0, 0, 0, 0)
+OPTION("-MQ", MQ, JoinedOrSeparate, M_Group, INVALID, 0, 0, 0, 0)
+OPTION("-MT", MT, JoinedOrSeparate, M_Group, INVALID, 0, 0, 0, 0)
+OPTION("-Mach", Mach, Flag, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("-M", M, Flag, M_Group, INVALID, 0, 0, 0, 0)
+OPTION("-O4", O4, Joined, O_Group, INVALID, 0, 0, 0, 0)
+OPTION("-ObjC++", ObjCXX, Flag, INVALID, INVALID, DriverOption, 0,
        "Treat source input files as Objective-C++ inputs", 0)
-OPTION("-ObjC", ObjC, Flag, INVALID, INVALID, "d", 0, 
+OPTION("-ObjC", ObjC, Flag, INVALID, INVALID, DriverOption, 0,
        "Treat source input files as Objective-C inputs", 0)
-OPTION("-O", O, Joined, O_Group, INVALID, "", 0, 0, 0)
-OPTION("-P", P, Flag, INVALID, INVALID, "", 0, 0, 0)
-OPTION("-Qn", Qn, Flag, INVALID, INVALID, "", 0, 0, 0)
-OPTION("-Qunused-arguments", Qunused_arguments, Flag, INVALID, INVALID, "d", 0, 
+OPTION("-O", O, Joined, O_Group, INVALID, 0, 0, 0, 0)
+OPTION("-P", P, Flag, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("-Qn", Qn, Flag, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("-Qunused-arguments", Qunused_arguments, Flag, INVALID, INVALID, DriverOption, 0,
        "Don't emit warning for unused driver arguments", 0)
-OPTION("-Q", Q, Flag, INVALID, INVALID, "", 0, 0, 0)
-OPTION("-R", R, Flag, INVALID, INVALID, "", 0, 0, 0)
-OPTION("-S", S, Flag, INVALID, INVALID, "d", 0, 
+OPTION("-Q", Q, Flag, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("-R", R, Flag, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("-S", S, Flag, INVALID, INVALID, DriverOption, 0,
        "Only run preprocess and compilation steps", 0)
-OPTION("-Tbss", Tbss, JoinedOrSeparate, T_Group, INVALID, "", 0, 0, 0)
-OPTION("-Tdata", Tdata, JoinedOrSeparate, T_Group, INVALID, "", 0, 0, 0)
-OPTION("-Ttext", Ttext, JoinedOrSeparate, T_Group, INVALID, "", 0, 0, 0)
-OPTION("-T", T, JoinedOrSeparate, T_Group, INVALID, "", 0, 0, 0)
-OPTION("-U", U, JoinedOrSeparate, INVALID, INVALID, "", 0, 0, 0)
-OPTION("-V", V, JoinedOrSeparate, INVALID, INVALID, "du", 0, 0, 0)
-OPTION("-Wa,", Wa_COMMA, CommaJoined, INVALID, INVALID, "", 0, 
+OPTION("-Tbss", Tbss, JoinedOrSeparate, T_Group, INVALID, 0, 0, 0, 0)
+OPTION("-Tdata", Tdata, JoinedOrSeparate, T_Group, INVALID, 0, 0, 0, 0)
+OPTION("-Ttext", Ttext, JoinedOrSeparate, T_Group, INVALID, 0, 0, 0, 0)
+OPTION("-T", T, JoinedOrSeparate, T_Group, INVALID, 0, 0, 0, 0)
+OPTION("-U", U, JoinedOrSeparate, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("-V", V, JoinedOrSeparate, INVALID, INVALID, DriverOption | Unsupported, 0, 0, 0)
+OPTION("-Wa,", Wa_COMMA, CommaJoined, INVALID, INVALID, 0, 0,
        "Pass the comma separated arguments in <arg> to the assembler", "<arg>")
-OPTION("-Wall", Wall, Flag, W_Group, INVALID, "", 0, 0, 0)
-OPTION("-Wextra", Wextra, Flag, W_Group, INVALID, "", 0, 0, 0)
-OPTION("-Wl,", Wl_COMMA, CommaJoined, INVALID, INVALID, "li", 0, 
+OPTION("-Wall", Wall, Flag, W_Group, INVALID, 0, 0, 0, 0)
+OPTION("-Wextra", Wextra, Flag, W_Group, INVALID, 0, 0, 0, 0)
+OPTION("-Wl,", Wl_COMMA, CommaJoined, INVALID, INVALID, LinkerInput | RenderAsInput, 0,
        "Pass the comma separated arguments in <arg> to the linker", "<arg>")
-OPTION("-Wno-nonportable-cfstrings", Wno_nonportable_cfstrings, Joined, W_Group, INVALID, "", 0, 0, 0)
-OPTION("-Wnonportable-cfstrings", Wnonportable_cfstrings, Joined, W_Group, INVALID, "", 0, 0, 0)
-OPTION("-Wp,", Wp_COMMA, CommaJoined, INVALID, INVALID, "", 0, 
+OPTION("-Wno-nonportable-cfstrings", Wno_nonportable_cfstrings, Joined, W_Group, INVALID, 0, 0, 0, 0)
+OPTION("-Wnonportable-cfstrings", Wnonportable_cfstrings, Joined, W_Group, INVALID, 0, 0, 0, 0)
+OPTION("-Wp,", Wp_COMMA, CommaJoined, INVALID, INVALID, 0, 0,
        "Pass the comma separated arguments in <arg> to the preprocessor", "<arg>")
-OPTION("-W", W_Joined, Joined, W_Group, INVALID, "", 0, 0, 0)
-OPTION("-Xanalyzer", Xanalyzer, Separate, INVALID, INVALID, "", 0, 
+OPTION("-W", W_Joined, Joined, W_Group, INVALID, 0, 0, 0, 0)
+OPTION("-Xanalyzer", Xanalyzer, Separate, INVALID, INVALID, 0, 0,
        "Pass <arg> to the static analyzer", "<arg>")
-OPTION("-Xarch_", Xarch__, JoinedAndSeparate, INVALID, INVALID, "d", 0, 0, 0)
-OPTION("-Xassembler", Xassembler, Separate, INVALID, INVALID, "", 0, 
+OPTION("-Xarch_", Xarch__, JoinedAndSeparate, INVALID, INVALID, DriverOption, 0, 0, 0)
+OPTION("-Xassembler", Xassembler, Separate, INVALID, INVALID, 0, 0,
        "Pass <arg> to the assembler", "<arg>")
-OPTION("-Xclang", Xclang, Separate, INVALID, INVALID, "", 0, 
+OPTION("-Xclang", Xclang, Separate, INVALID, INVALID, 0, 0,
        "Pass <arg> to the clang compiler", "<arg>")
-OPTION("-Xlinker", Xlinker, Separate, INVALID, INVALID, "li", 0, 
+OPTION("-Xlinker", Xlinker, Separate, INVALID, INVALID, LinkerInput | RenderAsInput, 0,
        "Pass <arg> to the linker", "<arg>")
-OPTION("-Xpreprocessor", Xpreprocessor, Separate, INVALID, INVALID, "", 0,
+OPTION("-Xpreprocessor", Xpreprocessor, Separate, INVALID, INVALID, 0, 0,
        "Pass <arg> to the preprocessor", "<arg>")
-OPTION("-X", X_Flag, Flag, INVALID, INVALID, "", 0, 0, 0)
-OPTION("-X", X_Joined, Joined, INVALID, INVALID, "", 0, 0, 0)
-OPTION("-Z", Z_Flag, Flag, INVALID, INVALID, "", 0, 0, 0)
-OPTION("-Z", Z_Joined, Joined, INVALID, INVALID, "", 0, 0, 0)
-OPTION("-all_load", all__load, Flag, INVALID, INVALID, "", 0, 0, 0)
-OPTION("-allowable_client", allowable__client, Separate, INVALID, INVALID, "", 0, 0, 0)
-OPTION("-ansi", ansi, Flag, a_Group, INVALID, "", 0, 0, 0)
-OPTION("-arch_errors_fatal", arch__errors__fatal, Flag, INVALID, INVALID, "", 0, 0, 0)
-OPTION("-arch", arch, Separate, INVALID, INVALID, "d", 0, 0, 0)
-OPTION("-a", a, Joined, a_Group, INVALID, "", 0, 0, 0)
-OPTION("-bind_at_load", bind__at__load, Flag, INVALID, INVALID, "", 0, 0, 0)
-OPTION("-bundle_loader", bundle__loader, Separate, INVALID, INVALID, "", 0, 0, 0)
-OPTION("-bundle", bundle, Flag, INVALID, INVALID, "", 0, 0, 0)
-OPTION("-b", b, JoinedOrSeparate, INVALID, INVALID, "u", 0, 0, 0)
-OPTION("-client_name", client__name, JoinedOrSeparate, INVALID, INVALID, "", 0, 0, 0)
-OPTION("-combine", combine, Flag, INVALID, INVALID, "du", 0, 0, 0)
-OPTION("-compatibility_version", compatibility__version, JoinedOrSeparate, INVALID, INVALID, "", 0, 0, 0)
-OPTION("-coverage", coverage, Flag, INVALID, INVALID, "", 0, 0, 0)
-OPTION("-cpp-precomp", cpp_precomp, Flag, INVALID, INVALID, "", 0, 0, 0)
-OPTION("-current_version", current__version, JoinedOrSeparate, INVALID, INVALID, "", 0, 0, 0)
-OPTION("-c", c, Flag, INVALID, INVALID, "d", 0, 
+OPTION("-X", X_Flag, Flag, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("-X", X_Joined, Joined, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("-Z", Z_Flag, Flag, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("-Z", Z_Joined, Joined, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("-all_load", all__load, Flag, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("-allowable_client", allowable__client, Separate, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("-ansi", ansi, Flag, a_Group, INVALID, 0, 0, 0, 0)
+OPTION("-arch_errors_fatal", arch__errors__fatal, Flag, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("-arch", arch, Separate, INVALID, INVALID, DriverOption, 0, 0, 0)
+OPTION("-a", a, Joined, a_Group, INVALID, 0, 0, 0, 0)
+OPTION("-bind_at_load", bind__at__load, Flag, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("-bundle_loader", bundle__loader, Separate, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("-bundle", bundle, Flag, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("-b", b, JoinedOrSeparate, INVALID, INVALID, Unsupported, 0, 0, 0)
+OPTION("-client_name", client__name, JoinedOrSeparate, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("-combine", combine, Flag, INVALID, INVALID, DriverOption | Unsupported, 0, 0, 0)
+OPTION("-compatibility_version", compatibility__version, JoinedOrSeparate, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("-coverage", coverage, Flag, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("-cpp-precomp", cpp_precomp, Flag, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("-current_version", current__version, JoinedOrSeparate, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("-c", c, Flag, INVALID, INVALID, DriverOption, 0,
        "Only run preprocess, compile, and assemble steps", 0)
-OPTION("-dA", dA, Flag, d_Group, INVALID, "", 0, 0, 0)
-OPTION("-dD", dD, Flag, d_Group, INVALID, "", 0, 0, 0)
-OPTION("-dM", dM, Flag, d_Group, INVALID, "", 0, 0, 0)
-OPTION("-dead_strip", dead__strip, Flag, INVALID, INVALID, "", 0, 0, 0)
-OPTION("-dependency-file", dependency_file, Separate, INVALID, INVALID, "", 0, 0, 0)
-OPTION("-dumpmachine", dumpmachine, Flag, INVALID, INVALID, "u", 0, 0, 0)
-OPTION("-dumpspecs", dumpspecs, Flag, INVALID, INVALID, "u", 0, 0, 0)
-OPTION("-dumpversion", dumpversion, Flag, INVALID, INVALID, "", 0, 0, 0)
-OPTION("-dylib_file", dylib__file, Separate, INVALID, INVALID, "", 0, 0, 0)
-OPTION("-dylinker_install_name", dylinker__install__name, JoinedOrSeparate, INVALID, INVALID, "", 0, 0, 0)
-OPTION("-dylinker", dylinker, Flag, INVALID, INVALID, "", 0, 0, 0)
-OPTION("-dynamiclib", dynamiclib, Flag, INVALID, INVALID, "", 0, 0, 0)
-OPTION("-dynamic", dynamic, Flag, INVALID, INVALID, "q", 0, 0, 0)
-OPTION("-d", d_Flag, Flag, d_Group, INVALID, "", 0, 0, 0)
-OPTION("-d", d_Joined, Joined, d_Group, INVALID, "", 0, 0, 0)
-OPTION("-emit-ast", emit_ast, Flag, INVALID, INVALID, "", 0,
+OPTION("-dA", dA, Flag, d_Group, INVALID, 0, 0, 0, 0)
+OPTION("-dD", dD, Flag, d_Group, INVALID, 0, 0, 0, 0)
+OPTION("-dM", dM, Flag, d_Group, INVALID, 0, 0, 0, 0)
+OPTION("-dead_strip", dead__strip, Flag, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("-dependency-file", dependency_file, Separate, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("-dumpmachine", dumpmachine, Flag, INVALID, INVALID, Unsupported, 0, 0, 0)
+OPTION("-dumpspecs", dumpspecs, Flag, INVALID, INVALID, Unsupported, 0, 0, 0)
+OPTION("-dumpversion", dumpversion, Flag, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("-dylib_file", dylib__file, Separate, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("-dylinker_install_name", dylinker__install__name, JoinedOrSeparate, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("-dylinker", dylinker, Flag, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("-dynamiclib", dynamiclib, Flag, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("-dynamic", dynamic, Flag, INVALID, INVALID, NoArgumentUnused, 0, 0, 0)
+OPTION("-d", d_Flag, Flag, d_Group, INVALID, 0, 0, 0, 0)
+OPTION("-d", d_Joined, Joined, d_Group, INVALID, 0, 0, 0, 0)
+OPTION("-emit-ast", emit_ast, Flag, INVALID, INVALID, 0, 0,
        "Emit Clang AST files for source inputs", 0)
-OPTION("-emit-llvm", emit_llvm, Flag, INVALID, INVALID, "", 0, 
+OPTION("-emit-llvm", emit_llvm, Flag, INVALID, INVALID, 0, 0,
        "Use the LLVM representation for assembler and object files", 0)
-OPTION("-exported_symbols_list", exported__symbols__list, Separate, INVALID, INVALID, "", 0, 0, 0)
-OPTION("-e", e, JoinedOrSeparate, INVALID, INVALID, "", 0, 0, 0)
-OPTION("-fPIC", fPIC, Flag, f_Group, INVALID, "", 0, 0, 0)
-OPTION("-fPIE", fPIE, Flag, f_Group, INVALID, "", 0, 0, 0)
-OPTION("-fapple-kext", fapple_kext, Flag, f_Group, INVALID, "", 0, 0, 0)
-OPTION("-fasm-blocks", fasm_blocks, Flag, clang_ignored_f_Group, INVALID, "", 0, 0, 0)
-OPTION("-fastcp", fastcp, Flag, f_Group, INVALID, "", 0, 0, 0)
-OPTION("-fastf", fastf, Flag, f_Group, INVALID, "", 0, 0, 0)
-OPTION("-fast", fast, Flag, f_Group, INVALID, "", 0, 0, 0)
-OPTION("-fasynchronous-unwind-tables", fasynchronous_unwind_tables, Flag, f_Group, INVALID, "", 0, 0, 0)
-OPTION("-fblock-introspection", fblock_introspection, Flag, f_Group, INVALID, "", 0, 0, 0)
-OPTION("-fblocks", fblocks, Flag, f_Group, INVALID, "", 0, 0, 0)
-OPTION("-fbootclasspath=", fbootclasspath_EQ, Joined, f_Group, INVALID, "", 0, 0, 0)
-OPTION("-fbuiltin-strcat", fbuiltin_strcat, Flag, f_Group, INVALID, "", 0, 0, 0)
-OPTION("-fbuiltin-strcpy", fbuiltin_strcpy, Flag, f_Group, INVALID, "", 0, 0, 0)
-OPTION("-fbuiltin", fbuiltin, Flag, f_Group, INVALID, "", 0, 0, 0)
-OPTION("-fclasspath=", fclasspath_EQ, Joined, f_Group, INVALID, "", 0, 0, 0)
-OPTION("-fcolor-diagnostics", fcolor_diagnostics, Flag, f_Group, INVALID, "", 0, 0, 0)
-OPTION("-fcommon", fcommon, Flag, f_Group, INVALID, "", 0, 0, 0)
-OPTION("-fcompile-resource=", fcompile_resource_EQ, Joined, f_Group, INVALID, "", 0, 0, 0)
-OPTION("-fconstant-cfstrings", fconstant_cfstrings, Flag, clang_ignored_f_Group, INVALID, "", 0, 0, 0)
-OPTION("-fconstant-string-class=", fconstant_string_class_EQ, Joined, f_Group, INVALID, "", 0, 0, 0)
-OPTION("-fcreate-profile", fcreate_profile, Flag, f_Group, INVALID, "", 0, 0, 0)
-OPTION("-fdebug-pass-arguments", fdebug_pass_arguments, Flag, f_Group, INVALID, "", 0, 0, 0)
-OPTION("-fdebug-pass-structure", fdebug_pass_structure, Flag, f_Group, INVALID, "", 0, 0, 0)
-OPTION("-fdiagnostics-fixit-info", fdiagnostics_fixit_info, Flag, f_Group, INVALID, "", 0, 0, 0)
-OPTION("-fdiagnostics-print-source-range-info", fdiagnostics_print_source_range_info, Flag, f_Group, INVALID, "", 0, 0, 0)
-OPTION("-fdiagnostics-show-option", fdiagnostics_show_option, Flag, f_Group, INVALID, "", 0, 0, 0)
-OPTION("-fdollars-in-identifiers", fdollars_in_identifiers, Flag, f_Group, INVALID, "", 0, 0, 0)
-OPTION("-feliminate-unused-debug-symbols", feliminate_unused_debug_symbols, Flag, f_Group, INVALID, "", 0, 0, 0)
-OPTION("-femit-all-decls", femit_all_decls, Flag, f_Group, INVALID, "", 0, 0, 0)
-OPTION("-fencoding=", fencoding_EQ, Joined, f_Group, INVALID, "", 0, 0, 0)
-OPTION("-fexceptions", fexceptions, Flag, f_Group, INVALID, "", 0, 0, 0)
-OPTION("-fextdirs=", fextdirs_EQ, Joined, f_Group, INVALID, "", 0, 0, 0)
-OPTION("-ffreestanding", ffreestanding, Flag, f_Group, INVALID, "", 0, 0, 0)
-OPTION("-fgnu-runtime", fgnu_runtime, Flag, f_Group, INVALID, "", 0, 0, 0)
-OPTION("-fheinous-gnu-extensions", fheinous_gnu_extensions, Flag, INVALID, INVALID, "", 0, 0, 0)
-OPTION("-filelist", filelist, Separate, INVALID, INVALID, "l", 0, 0, 0)
-OPTION("-findirect-virtual-calls", findirect_virtual_calls, Flag, f_Group, INVALID, "", 0, 0, 0)
-OPTION("-finline-functions", finline_functions, Flag, clang_ignored_f_Group, INVALID, "", 0, 0, 0)
-OPTION("-finline", finline, Flag, clang_ignored_f_Group, INVALID, "", 0, 0, 0)
-OPTION("-fkeep-inline-functions", fkeep_inline_functions, Flag, clang_ignored_f_Group, INVALID, "", 0, 0, 0)
-OPTION("-flat_namespace", flat__namespace, Flag, INVALID, INVALID, "", 0, 0, 0)
-OPTION("-flax-vector-conversions", flax_vector_conversions, Flag, f_Group, INVALID, "", 0, 0, 0)
-OPTION("-flimited-precision=", flimited_precision_EQ, Joined, f_Group, INVALID, "", 0, 0, 0)
-OPTION("-flto", flto, Flag, f_Group, INVALID, "", 0, 0, 0)
-OPTION("-fmath-errno", fmath_errno, Flag, f_Group, INVALID, "", 0, 0, 0)
-OPTION("-fmerge-all-constants", fmerge_all_constants, Flag, f_Group, INVALID, "", 0, 0, 0)
-OPTION("-fmessage-length=", fmessage_length_EQ, Joined, f_Group, INVALID, "", 0, 0, 0)
-OPTION("-fms-extensions", fms_extensions, Flag, f_Group, INVALID, "", 0, 0, 0)
-OPTION("-fmudflapth", fmudflapth, Flag, f_Group, INVALID, "", 0, 0, 0)
-OPTION("-fmudflap", fmudflap, Flag, f_Group, INVALID, "", 0, 0, 0)
-OPTION("-fnested-functions", fnested_functions, Flag, f_Group, INVALID, "", 0, 0, 0)
-OPTION("-fnext-runtime", fnext_runtime, Flag, f_Group, INVALID, "", 0, 0, 0)
-OPTION("-fno-asynchronous-unwind-tables", fno_asynchronous_unwind_tables, Flag, f_Group, INVALID, "", 0, 0, 0)
-OPTION("-fno-blocks", fno_blocks, Flag, f_Group, INVALID, "", 0, 0, 0)
-OPTION("-fno-builtin-strcat", fno_builtin_strcat, Flag, f_Group, INVALID, "", 0, 0, 0)
-OPTION("-fno-builtin-strcpy", fno_builtin_strcpy, Flag, f_Group, INVALID, "", 0, 0, 0)
-OPTION("-fno-builtin", fno_builtin, Flag, f_Group, INVALID, "", 0, 0, 0)
-OPTION("-fno-caret-diagnostics", fno_caret_diagnostics, Flag, f_Group, INVALID, "", 0, 0, 0)
-OPTION("-fno-color-diagnostics", fno_color_diagnostics, Flag, f_Group, INVALID, "", 0, 0, 0)
-OPTION("-fno-common", fno_common, Flag, f_Group, INVALID, "", 0, 0, 0)
-OPTION("-fno-constant-cfstrings", fno_constant_cfstrings, Flag, f_Group, INVALID, "", 0, 0, 0)
-OPTION("-fno-diagnostics-fixit-info", fno_diagnostics_fixit_info, Flag, f_Group, INVALID, "", 0, 0, 0)
-OPTION("-fno-diagnostics-show-option", fno_diagnostics_show_option, Flag, f_Group, INVALID, "", 0, 0, 0)
-OPTION("-fno-dollars-in-identifiers", fno_dollars_in_identifiers, Flag, f_Group, INVALID, "", 0, 0, 0)
-OPTION("-fno-eliminate-unused-debug-symbols", fno_eliminate_unused_debug_symbols, Flag, f_Group, INVALID, "", 0, 0, 0)
-OPTION("-fno-exceptions", fno_exceptions, Flag, f_Group, INVALID, "", 0, 0, 0)
-OPTION("-fno-inline-functions", fno_inline_functions, Flag, clang_ignored_f_Group, INVALID, "", 0, 0, 0)
-OPTION("-fno-inline", fno_inline, Flag, clang_ignored_f_Group, INVALID, "", 0, 0, 0)
-OPTION("-fno-keep-inline-functions", fno_keep_inline_functions, Flag, clang_ignored_f_Group, INVALID, "", 0, 0, 0)
-OPTION("-fno-math-errno", fno_math_errno, Flag, f_Group, INVALID, "", 0, 0, 0)
-OPTION("-fno-merge-all-constants", fno_merge_all_constants, Flag, f_Group, INVALID, "", 0, 0, 0)
-OPTION("-fno-ms-extensions", fno_ms_extensions, Flag, f_Group, INVALID, "", 0, 0, 0)
-OPTION("-fno-omit-frame-pointer", fno_omit_frame_pointer, Flag, f_Group, INVALID, "", 0, 0, 0)
-OPTION("-fno-pascal-strings", fno_pascal_strings, Flag, f_Group, INVALID, "", 0, 0, 0)
-OPTION("-fno-rtti", fno_rtti, Flag, f_Group, INVALID, "", 0, 0, 0)
-OPTION("-fno-show-column", fno_show_column, Flag, f_Group, INVALID, "", 0, 0, 0)
-OPTION("-fno-show-source-location", fno_show_source_location, Flag, f_Group, INVALID, "", 0, 0, 0)
-OPTION("-fno-stack-protector", fno_stack_protector, Flag, f_Group, INVALID, "", 0, 0, 0)
-OPTION("-fno-strict-aliasing", fno_strict_aliasing, Flag, clang_ignored_f_Group, INVALID, "", 0, 0, 0)
-OPTION("-fno-unit-at-a-time", fno_unit_at_a_time, Flag, f_Group, INVALID, "", 0, 0, 0)
-OPTION("-fno-unwind-tables", fno_unwind_tables, Flag, f_Group, INVALID, "", 0, 0, 0)
-OPTION("-fno-working-directory", fno_working_directory, Flag, f_Group, INVALID, "", 0, 0, 0)
-OPTION("-fno-zero-initialized-in-bss", fno_zero_initialized_in_bss, Flag, f_Group, INVALID, "", 0, 0, 0)
-OPTION("-fobjc-atdefs", fobjc_atdefs, Flag, clang_ignored_f_Group, INVALID, "", 0, 0, 0)
-OPTION("-fobjc-call-cxx-cdtors", fobjc_call_cxx_cdtors, Flag, clang_ignored_f_Group, INVALID, "", 0, 0, 0)
-OPTION("-fobjc-gc-only", fobjc_gc_only, Flag, f_Group, INVALID, "", 0, 0, 0)
-OPTION("-fobjc-gc", fobjc_gc, Flag, f_Group, INVALID, "", 0, 0, 0)
-OPTION("-fobjc-new-property", fobjc_new_property, Flag, clang_ignored_f_Group, INVALID, "", 0, 0, 0)
-OPTION("-fobjc-nonfragile-abi", fobjc_nonfragile_abi, Flag, f_Group, INVALID, "", 0, 0, 0)
-OPTION("-fobjc-sender-dependent-dispatch", fobjc_sender_dependent_dispatch, Flag, f_Group, INVALID, "", 0, 0, 0)
-OPTION("-fobjc", fobjc, Flag, f_Group, INVALID, "", 0, 0, 0)
-OPTION("-fomit-frame-pointer", fomit_frame_pointer, Flag, f_Group, INVALID, "", 0, 0, 0)
-OPTION("-fopenmp", fopenmp, Flag, f_Group, INVALID, "", 0, 0, 0)
-OPTION("-force_cpusubtype_ALL", force__cpusubtype__ALL, Flag, INVALID, INVALID, "", 0, 0, 0)
-OPTION("-force_flat_namespace", force__flat__namespace, Flag, INVALID, INVALID, "", 0, 0, 0)
-OPTION("-foutput-class-dir=", foutput_class_dir_EQ, Joined, f_Group, INVALID, "", 0, 0, 0)
-OPTION("-fpascal-strings", fpascal_strings, Flag, f_Group, INVALID, "", 0, 0, 0)
-OPTION("-fpch-preprocess", fpch_preprocess, Flag, f_Group, INVALID, "", 0, 0, 0)
-OPTION("-fpic", fpic, Flag, f_Group, INVALID, "", 0, 0, 0)
-OPTION("-fpie", fpie, Flag, f_Group, INVALID, "", 0, 0, 0)
-OPTION("-fprofile-arcs", fprofile_arcs, Flag, f_Group, INVALID, "", 0, 0, 0)
-OPTION("-fprofile-generate", fprofile_generate, Flag, f_Group, INVALID, "", 0, 0, 0)
-OPTION("-framework", framework, Separate, INVALID, INVALID, "l", 0, 0, 0)
-OPTION("-frtti", frtti, Flag, f_Group, INVALID, "", 0, 0, 0)
-OPTION("-fshort-wchar", fshort_wchar, Flag, f_Group, INVALID, "", 0, 0, 0)
-OPTION("-fshow-source-location", fshow_source_location, Flag, f_Group, INVALID, "", 0, 0, 0)
-OPTION("-fsigned-bitfields", fsigned_bitfields, Flag, f_Group, INVALID, "", 0, 0, 0)
-OPTION("-fsigned-char", fsigned_char, Flag, f_Group, INVALID, "", 0, 0, 0)
-OPTION("-fstack-protector-all", fstack_protector_all, Flag, f_Group, INVALID, "", 0, 0, 0)
-OPTION("-fstack-protector", fstack_protector, Flag, f_Group, INVALID, "", 0, 0, 0)
-OPTION("-fstrict-aliasing", fstrict_aliasing, Flag, clang_ignored_f_Group, INVALID, "", 0, 0, 0)
-OPTION("-fsyntax-only", fsyntax_only, Flag, INVALID, INVALID, "d", 0, 0, 0)
-OPTION("-ftemplate-depth-", ftemplate_depth_, Joined, f_Group, INVALID, "", 0, 0, 0)
-OPTION("-fterminated-vtables", fterminated_vtables, Flag, f_Group, INVALID, "", 0, 0, 0)
-OPTION("-ftime-report", ftime_report, Flag, f_Group, INVALID, "", 0, 0, 0)
-OPTION("-ftrapv", ftrapv, Flag, f_Group, INVALID, "", 0, 0, 0)
-OPTION("-funit-at-a-time", funit_at_a_time, Flag, f_Group, INVALID, "", 0, 0, 0)
-OPTION("-funsigned-bitfields", funsigned_bitfields, Flag, f_Group, INVALID, "", 0, 0, 0)
-OPTION("-funsigned-char", funsigned_char, Flag, f_Group, INVALID, "", 0, 0, 0)
-OPTION("-funwind-tables", funwind_tables, Flag, f_Group, INVALID, "", 0, 0, 0)
-OPTION("-fverbose-asm", fverbose_asm, Flag, f_Group, INVALID, "", 0, 0, 0)
-OPTION("-fvisibility=", fvisibility_EQ, Joined, f_Group, INVALID, "", 0, 0, 0)
-OPTION("-fwritable-strings", fwritable_strings, Flag, f_Group, INVALID, "", 0, 0, 0)
-OPTION("-fzero-initialized-in-bss", fzero_initialized_in_bss, Flag, f_Group, INVALID, "", 0, 0, 0)
-OPTION("-f", f, Joined, f_Group, INVALID, "", 0, 0, 0)
-OPTION("-g0", g0, Joined, g_Group, INVALID, "", 0, 0, 0)
-OPTION("-g3", g3, Joined, g_Group, INVALID, "", 0, 0, 0)
-OPTION("-gfull", gfull, Joined, g_Group, INVALID, "", 0, 0, 0)
-OPTION("-gstabs", gstabs, Joined, g_Group, INVALID, "", 0, 0, 0)
-OPTION("-gused", gused, Joined, g_Group, INVALID, "", 0, 0, 0)
-OPTION("-g", g_Flag, Flag, g_Group, INVALID, "", 0, 0, 0)
-OPTION("-g", g_Joined, Joined, g_Group, INVALID, "", 0, 0, 0)
-OPTION("-headerpad_max_install_names", headerpad__max__install__names, Joined, INVALID, INVALID, "", 0, 0, 0)
-OPTION("-idirafter", idirafter, JoinedOrSeparate, clang_i_Group, INVALID, "", 0, 0, 0)
-OPTION("-iframework", iframework, JoinedOrSeparate, clang_i_Group, INVALID, "", 0, 0, 0)
-OPTION("-imacros", imacros, JoinedOrSeparate, clang_i_Group, INVALID, "", 0, 0, 0)
-OPTION("-image_base", image__base, Separate, INVALID, INVALID, "", 0, 0, 0)
-OPTION("-include", include, JoinedOrSeparate, clang_i_Group, INVALID, "", 0, 0, 0)
-OPTION("-init", init, Separate, INVALID, INVALID, "", 0, 0, 0)
-OPTION("-install_name", install__name, Separate, INVALID, INVALID, "", 0, 0, 0)
-OPTION("-iprefix", iprefix, JoinedOrSeparate, clang_i_Group, INVALID, "", 0, 0, 0)
-OPTION("-iquote", iquote, JoinedOrSeparate, clang_i_Group, INVALID, "", 0, 0, 0)
-OPTION("-isysroot", isysroot, JoinedOrSeparate, i_Group, INVALID, "", 0, 0, 0)
-OPTION("-isystem", isystem, JoinedOrSeparate, clang_i_Group, INVALID, "", 0, 0, 0)
-OPTION("-iwithprefixbefore", iwithprefixbefore, JoinedOrSeparate, clang_i_Group, INVALID, "", 0, 0, 0)
-OPTION("-iwithprefix", iwithprefix, JoinedOrSeparate, clang_i_Group, INVALID, "", 0, 0, 0)
-OPTION("-iwithsysroot", iwithsysroot, JoinedOrSeparate, i_Group, INVALID, "", 0, 0, 0)
-OPTION("-i", i, Joined, i_Group, INVALID, "", 0, 0, 0)
-OPTION("-keep_private_externs", keep__private__externs, Flag, INVALID, INVALID, "", 0, 0, 0)
-OPTION("-l", l, JoinedOrSeparate, INVALID, INVALID, "l", 0, 0, 0)
-OPTION("-m32", m32, Flag, m_Group, INVALID, "d", 0, 0, 0)
-OPTION("-m3dnowa", m3dnowa, Flag, m_x86_Features_Group, INVALID, "", 0, 0, 0)
-OPTION("-m3dnow", m3dnow, Flag, m_x86_Features_Group, INVALID, "", 0, 0, 0)
-OPTION("-m64", m64, Flag, m_Group, INVALID, "d", 0, 0, 0)
-OPTION("-mabi=", mabi_EQ, Joined, m_Group, INVALID, "d", 0, 0, 0)
-OPTION("-march=", march_EQ, Joined, m_Group, INVALID, "d", 0, 0, 0)
-OPTION("-mcmodel=", mcmodel_EQ, Joined, m_Group, INVALID, "d", 0, 0, 0)
-OPTION("-mconstant-cfstrings", mconstant_cfstrings, Flag, clang_ignored_m_Group, INVALID, "", 0, 0, 0)
-OPTION("-mcpu=", mcpu_EQ, Joined, m_Group, INVALID, "d", 0, 0, 0)
-OPTION("-mdynamic-no-pic", mdynamic_no_pic, Joined, m_Group, INVALID, "q", 0, 0, 0)
-OPTION("-mfix-and-continue", mfix_and_continue, Flag, clang_ignored_m_Group, INVALID, "", 0, 0, 0)
-OPTION("-mfloat-abi=", mfloat_abi_EQ, Joined, m_Group, INVALID, "", 0, 0, 0)
-OPTION("-mhard-float", mhard_float, Flag, m_Group, INVALID, "", 0, 0, 0)
-OPTION("-miphoneos-version-min=", miphoneos_version_min_EQ, Joined, m_Group, INVALID, "", 0, 0, 0)
-OPTION("-mkernel", mkernel, Flag, m_Group, INVALID, "", 0, 0, 0)
-OPTION("-mllvm", mllvm, Separate, INVALID, INVALID, "", 0, 0, 0)
-OPTION("-mmacosx-version-min=", mmacosx_version_min_EQ, Joined, m_Group, INVALID, "", 0, 0, 0)
-OPTION("-mmmx", mmmx, Flag, m_x86_Features_Group, INVALID, "", 0, 0, 0)
-OPTION("-mno-3dnowa", mno_3dnowa, Flag, m_x86_Features_Group, INVALID, "", 0, 0, 0)
-OPTION("-mno-3dnow", mno_3dnow, Flag, m_x86_Features_Group, INVALID, "", 0, 0, 0)
-OPTION("-mno-constant-cfstrings", mno_constant_cfstrings, Flag, m_Group, INVALID, "", 0, 0, 0)
-OPTION("-mno-mmx", mno_mmx, Flag, m_x86_Features_Group, INVALID, "", 0, 0, 0)
-OPTION("-mno-pascal-strings", mno_pascal_strings, Flag, m_Group, INVALID, "", 0, 0, 0)
-OPTION("-mno-red-zone", mno_red_zone, Flag, m_Group, INVALID, "", 0, 0, 0)
-OPTION("-mno-soft-float", mno_soft_float, Flag, m_Group, INVALID, "", 0, 0, 0)
-OPTION("-mno-sse2", mno_sse2, Flag, m_x86_Features_Group, INVALID, "", 0, 0, 0)
-OPTION("-mno-sse3", mno_sse3, Flag, m_x86_Features_Group, INVALID, "", 0, 0, 0)
-OPTION("-mno-sse4a", mno_sse4a, Flag, m_x86_Features_Group, INVALID, "", 0, 0, 0)
-OPTION("-mno-sse4", mno_sse4, Flag, m_x86_Features_Group, INVALID, "", 0, 0, 0)
-OPTION("-mno-sse", mno_sse, Flag, m_x86_Features_Group, INVALID, "", 0, 0, 0)
-OPTION("-mno-ssse3", mno_ssse3, Flag, m_x86_Features_Group, INVALID, "", 0, 0, 0)
-OPTION("-mno-thumb", mno_thumb, Flag, m_Group, INVALID, "", 0, 0, 0)
-OPTION("-mno-warn-nonportable-cfstrings", mno_warn_nonportable_cfstrings, Flag, m_Group, INVALID, "", 0, 0, 0)
-OPTION("-mpascal-strings", mpascal_strings, Flag, m_Group, INVALID, "", 0, 0, 0)
-OPTION("-mred-zone", mred_zone, Flag, m_Group, INVALID, "", 0, 0, 0)
-OPTION("-msoft-float", msoft_float, Flag, m_Group, INVALID, "", 0, 0, 0)
-OPTION("-msse2", msse2, Flag, m_x86_Features_Group, INVALID, "", 0, 0, 0)
-OPTION("-msse3", msse3, Flag, m_x86_Features_Group, INVALID, "", 0, 0, 0)
-OPTION("-msse4a", msse4a, Flag, m_x86_Features_Group, INVALID, "", 0, 0, 0)
-OPTION("-msse4", msse4, Flag, m_x86_Features_Group, INVALID, "", 0, 0, 0)
-OPTION("-msse", msse, Flag, m_x86_Features_Group, INVALID, "", 0, 0, 0)
-OPTION("-mssse3", mssse3, Flag, m_x86_Features_Group, INVALID, "", 0, 0, 0)
-OPTION("-mthumb", mthumb, Flag, m_Group, INVALID, "", 0, 0, 0)
-OPTION("-mtune=", mtune_EQ, Joined, m_Group, INVALID, "", 0, 0, 0)
-OPTION("-multi_module", multi__module, Flag, INVALID, INVALID, "", 0, 0, 0)
-OPTION("-multiply_defined_unused", multiply__defined__unused, Separate, INVALID, INVALID, "", 0, 0, 0)
-OPTION("-multiply_defined", multiply__defined, Separate, INVALID, INVALID, "", 0, 0, 0)
-OPTION("-mwarn-nonportable-cfstrings", mwarn_nonportable_cfstrings, Flag, m_Group, INVALID, "", 0, 0, 0)
-OPTION("-m", m_Separate, Separate, m_Group, INVALID, "", 0, 0, 0)
-OPTION("-m", m_Joined, Joined, m_Group, INVALID, "", 0, 0, 0)
-OPTION("-no-cpp-precomp", no_cpp_precomp, Flag, INVALID, INVALID, "", 0, 0, 0)
-OPTION("-no-integrated-cpp", no_integrated_cpp, Flag, INVALID, INVALID, "d", 0, 0, 0)
-OPTION("-no_dead_strip_inits_and_terms", no__dead__strip__inits__and__terms, Flag, INVALID, INVALID, "", 0, 0, 0)
-OPTION("-nobuiltininc", nobuiltininc, Flag, INVALID, INVALID, "", 0, 0, 0)
-OPTION("-nodefaultlibs", nodefaultlibs, Flag, INVALID, INVALID, "", 0, 0, 0)
-OPTION("-nofixprebinding", nofixprebinding, Flag, INVALID, INVALID, "", 0, 0, 0)
-OPTION("-nolibc", nolibc, Flag, INVALID, INVALID, "", 0, 0, 0)
-OPTION("-nomultidefs", nomultidefs, Flag, INVALID, INVALID, "", 0, 0, 0)
-OPTION("-noprebind", noprebind, Flag, INVALID, INVALID, "", 0, 0, 0)
-OPTION("-noseglinkedit", noseglinkedit, Flag, INVALID, INVALID, "", 0, 0, 0)
-OPTION("-nostartfiles", nostartfiles, Flag, INVALID, INVALID, "", 0, 0, 0)
-OPTION("-nostdinc", nostdinc, Flag, INVALID, INVALID, "", 0, 0, 0)
-OPTION("-nostdlib", nostdlib, Flag, INVALID, INVALID, "", 0, 0, 0)
-OPTION("-object", object, Flag, INVALID, INVALID, "", 0, 0, 0)
-OPTION("-o", o, JoinedOrSeparate, INVALID, INVALID, "di", 0, 
+OPTION("-exported_symbols_list", exported__symbols__list, Separate, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("-e", e, JoinedOrSeparate, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("-fPIC", fPIC, Flag, f_Group, INVALID, 0, 0, 0, 0)
+OPTION("-fPIE", fPIE, Flag, f_Group, INVALID, 0, 0, 0, 0)
+OPTION("-fapple-kext", fapple_kext, Flag, f_Group, INVALID, 0, 0, 0, 0)
+OPTION("-fasm-blocks", fasm_blocks, Flag, clang_ignored_f_Group, INVALID, 0, 0, 0, 0)
+OPTION("-fastcp", fastcp, Flag, f_Group, INVALID, 0, 0, 0, 0)
+OPTION("-fastf", fastf, Flag, f_Group, INVALID, 0, 0, 0, 0)
+OPTION("-fast", fast, Flag, f_Group, INVALID, 0, 0, 0, 0)
+OPTION("-fasynchronous-unwind-tables", fasynchronous_unwind_tables, Flag, f_Group, INVALID, 0, 0, 0, 0)
+OPTION("-fblock-introspection", fblock_introspection, Flag, f_Group, INVALID, 0, 0, 0, 0)
+OPTION("-fblocks", fblocks, Flag, f_Group, INVALID, 0, 0, 0, 0)
+OPTION("-fbootclasspath=", fbootclasspath_EQ, Joined, f_Group, INVALID, 0, 0, 0, 0)
+OPTION("-fbuiltin-strcat", fbuiltin_strcat, Flag, f_Group, INVALID, 0, 0, 0, 0)
+OPTION("-fbuiltin-strcpy", fbuiltin_strcpy, Flag, f_Group, INVALID, 0, 0, 0, 0)
+OPTION("-fbuiltin", fbuiltin, Flag, f_Group, INVALID, 0, 0, 0, 0)
+OPTION("-fclasspath=", fclasspath_EQ, Joined, f_Group, INVALID, 0, 0, 0, 0)
+OPTION("-fcolor-diagnostics", fcolor_diagnostics, Flag, f_Group, INVALID, 0, 0, 0, 0)
+OPTION("-fcommon", fcommon, Flag, f_Group, INVALID, 0, 0, 0, 0)
+OPTION("-fcompile-resource=", fcompile_resource_EQ, Joined, f_Group, INVALID, 0, 0, 0, 0)
+OPTION("-fconstant-cfstrings", fconstant_cfstrings, Flag, clang_ignored_f_Group, INVALID, 0, 0, 0, 0)
+OPTION("-fconstant-string-class=", fconstant_string_class_EQ, Joined, f_Group, INVALID, 0, 0, 0, 0)
+OPTION("-fcreate-profile", fcreate_profile, Flag, f_Group, INVALID, 0, 0, 0, 0)
+OPTION("-fdebug-pass-arguments", fdebug_pass_arguments, Flag, f_Group, INVALID, 0, 0, 0, 0)
+OPTION("-fdebug-pass-structure", fdebug_pass_structure, Flag, f_Group, INVALID, 0, 0, 0, 0)
+OPTION("-fdiagnostics-fixit-info", fdiagnostics_fixit_info, Flag, f_Group, INVALID, 0, 0, 0, 0)
+OPTION("-fdiagnostics-print-source-range-info", fdiagnostics_print_source_range_info, Flag, f_Group, INVALID, 0, 0, 0, 0)
+OPTION("-fdiagnostics-show-option", fdiagnostics_show_option, Flag, f_Group, INVALID, 0, 0, 0, 0)
+OPTION("-fdollars-in-identifiers", fdollars_in_identifiers, Flag, f_Group, INVALID, 0, 0, 0, 0)
+OPTION("-feliminate-unused-debug-symbols", feliminate_unused_debug_symbols, Flag, f_Group, INVALID, 0, 0, 0, 0)
+OPTION("-femit-all-decls", femit_all_decls, Flag, f_Group, INVALID, 0, 0, 0, 0)
+OPTION("-fencoding=", fencoding_EQ, Joined, f_Group, INVALID, 0, 0, 0, 0)
+OPTION("-fexceptions", fexceptions, Flag, f_Group, INVALID, 0, 0, 0, 0)
+OPTION("-fextdirs=", fextdirs_EQ, Joined, f_Group, INVALID, 0, 0, 0, 0)
+OPTION("-ffreestanding", ffreestanding, Flag, f_Group, INVALID, 0, 0, 0, 0)
+OPTION("-fgnu-runtime", fgnu_runtime, Flag, f_Group, INVALID, 0, 0, 0, 0)
+OPTION("-fheinous-gnu-extensions", fheinous_gnu_extensions, Flag, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("-filelist", filelist, Separate, INVALID, INVALID, LinkerInput, 0, 0, 0)
+OPTION("-findirect-virtual-calls", findirect_virtual_calls, Flag, f_Group, INVALID, 0, 0, 0, 0)
+OPTION("-finline-functions", finline_functions, Flag, clang_ignored_f_Group, INVALID, 0, 0, 0, 0)
+OPTION("-finline", finline, Flag, clang_ignored_f_Group, INVALID, 0, 0, 0, 0)
+OPTION("-fkeep-inline-functions", fkeep_inline_functions, Flag, clang_ignored_f_Group, INVALID, 0, 0, 0, 0)
+OPTION("-flat_namespace", flat__namespace, Flag, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("-flax-vector-conversions", flax_vector_conversions, Flag, f_Group, INVALID, 0, 0, 0, 0)
+OPTION("-flimited-precision=", flimited_precision_EQ, Joined, f_Group, INVALID, 0, 0, 0, 0)
+OPTION("-flto", flto, Flag, f_Group, INVALID, 0, 0, 0, 0)
+OPTION("-fmath-errno", fmath_errno, Flag, f_Group, INVALID, 0, 0, 0, 0)
+OPTION("-fmerge-all-constants", fmerge_all_constants, Flag, f_Group, INVALID, 0, 0, 0, 0)
+OPTION("-fmessage-length=", fmessage_length_EQ, Joined, f_Group, INVALID, 0, 0, 0, 0)
+OPTION("-fms-extensions", fms_extensions, Flag, f_Group, INVALID, 0, 0, 0, 0)
+OPTION("-fmudflapth", fmudflapth, Flag, f_Group, INVALID, 0, 0, 0, 0)
+OPTION("-fmudflap", fmudflap, Flag, f_Group, INVALID, 0, 0, 0, 0)
+OPTION("-fnested-functions", fnested_functions, Flag, f_Group, INVALID, 0, 0, 0, 0)
+OPTION("-fnext-runtime", fnext_runtime, Flag, f_Group, INVALID, 0, 0, 0, 0)
+OPTION("-fno-asynchronous-unwind-tables", fno_asynchronous_unwind_tables, Flag, f_Group, INVALID, 0, 0, 0, 0)
+OPTION("-fno-blocks", fno_blocks, Flag, f_Group, INVALID, 0, 0, 0, 0)
+OPTION("-fno-builtin-strcat", fno_builtin_strcat, Flag, f_Group, INVALID, 0, 0, 0, 0)
+OPTION("-fno-builtin-strcpy", fno_builtin_strcpy, Flag, f_Group, INVALID, 0, 0, 0, 0)
+OPTION("-fno-builtin", fno_builtin, Flag, f_Group, INVALID, 0, 0, 0, 0)
+OPTION("-fno-caret-diagnostics", fno_caret_diagnostics, Flag, f_Group, INVALID, 0, 0, 0, 0)
+OPTION("-fno-color-diagnostics", fno_color_diagnostics, Flag, f_Group, INVALID, 0, 0, 0, 0)
+OPTION("-fno-common", fno_common, Flag, f_Group, INVALID, 0, 0, 0, 0)
+OPTION("-fno-constant-cfstrings", fno_constant_cfstrings, Flag, f_Group, INVALID, 0, 0, 0, 0)
+OPTION("-fno-diagnostics-fixit-info", fno_diagnostics_fixit_info, Flag, f_Group, INVALID, 0, 0, 0, 0)
+OPTION("-fno-diagnostics-show-option", fno_diagnostics_show_option, Flag, f_Group, INVALID, 0, 0, 0, 0)
+OPTION("-fno-dollars-in-identifiers", fno_dollars_in_identifiers, Flag, f_Group, INVALID, 0, 0, 0, 0)
+OPTION("-fno-eliminate-unused-debug-symbols", fno_eliminate_unused_debug_symbols, Flag, f_Group, INVALID, 0, 0, 0, 0)
+OPTION("-fno-exceptions", fno_exceptions, Flag, f_Group, INVALID, 0, 0, 0, 0)
+OPTION("-fno-inline-functions", fno_inline_functions, Flag, clang_ignored_f_Group, INVALID, 0, 0, 0, 0)
+OPTION("-fno-inline", fno_inline, Flag, clang_ignored_f_Group, INVALID, 0, 0, 0, 0)
+OPTION("-fno-keep-inline-functions", fno_keep_inline_functions, Flag, clang_ignored_f_Group, INVALID, 0, 0, 0, 0)
+OPTION("-fno-math-errno", fno_math_errno, Flag, f_Group, INVALID, 0, 0, 0, 0)
+OPTION("-fno-merge-all-constants", fno_merge_all_constants, Flag, f_Group, INVALID, 0, 0, 0, 0)
+OPTION("-fno-ms-extensions", fno_ms_extensions, Flag, f_Group, INVALID, 0, 0, 0, 0)
+OPTION("-fno-omit-frame-pointer", fno_omit_frame_pointer, Flag, f_Group, INVALID, 0, 0, 0, 0)
+OPTION("-fno-pascal-strings", fno_pascal_strings, Flag, f_Group, INVALID, 0, 0, 0, 0)
+OPTION("-fno-rtti", fno_rtti, Flag, f_Group, INVALID, 0, 0, 0, 0)
+OPTION("-fno-show-column", fno_show_column, Flag, f_Group, INVALID, 0, 0, 0, 0)
+OPTION("-fno-show-source-location", fno_show_source_location, Flag, f_Group, INVALID, 0, 0, 0, 0)
+OPTION("-fno-stack-protector", fno_stack_protector, Flag, f_Group, INVALID, 0, 0, 0, 0)
+OPTION("-fno-strict-aliasing", fno_strict_aliasing, Flag, clang_ignored_f_Group, INVALID, 0, 0, 0, 0)
+OPTION("-fno-unit-at-a-time", fno_unit_at_a_time, Flag, f_Group, INVALID, 0, 0, 0, 0)
+OPTION("-fno-unwind-tables", fno_unwind_tables, Flag, f_Group, INVALID, 0, 0, 0, 0)
+OPTION("-fno-working-directory", fno_working_directory, Flag, f_Group, INVALID, 0, 0, 0, 0)
+OPTION("-fno-zero-initialized-in-bss", fno_zero_initialized_in_bss, Flag, f_Group, INVALID, 0, 0, 0, 0)
+OPTION("-fobjc-atdefs", fobjc_atdefs, Flag, clang_ignored_f_Group, INVALID, 0, 0, 0, 0)
+OPTION("-fobjc-call-cxx-cdtors", fobjc_call_cxx_cdtors, Flag, clang_ignored_f_Group, INVALID, 0, 0, 0, 0)
+OPTION("-fobjc-gc-only", fobjc_gc_only, Flag, f_Group, INVALID, 0, 0, 0, 0)
+OPTION("-fobjc-gc", fobjc_gc, Flag, f_Group, INVALID, 0, 0, 0, 0)
+OPTION("-fobjc-new-property", fobjc_new_property, Flag, clang_ignored_f_Group, INVALID, 0, 0, 0, 0)
+OPTION("-fobjc-nonfragile-abi", fobjc_nonfragile_abi, Flag, f_Group, INVALID, 0, 0, 0, 0)
+OPTION("-fobjc-sender-dependent-dispatch", fobjc_sender_dependent_dispatch, Flag, f_Group, INVALID, 0, 0, 0, 0)
+OPTION("-fobjc", fobjc, Flag, f_Group, INVALID, 0, 0, 0, 0)
+OPTION("-fomit-frame-pointer", fomit_frame_pointer, Flag, f_Group, INVALID, 0, 0, 0, 0)
+OPTION("-fopenmp", fopenmp, Flag, f_Group, INVALID, 0, 0, 0, 0)
+OPTION("-force_cpusubtype_ALL", force__cpusubtype__ALL, Flag, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("-force_flat_namespace", force__flat__namespace, Flag, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("-foutput-class-dir=", foutput_class_dir_EQ, Joined, f_Group, INVALID, 0, 0, 0, 0)
+OPTION("-fpascal-strings", fpascal_strings, Flag, f_Group, INVALID, 0, 0, 0, 0)
+OPTION("-fpch-preprocess", fpch_preprocess, Flag, f_Group, INVALID, 0, 0, 0, 0)
+OPTION("-fpic", fpic, Flag, f_Group, INVALID, 0, 0, 0, 0)
+OPTION("-fpie", fpie, Flag, f_Group, INVALID, 0, 0, 0, 0)
+OPTION("-fprofile-arcs", fprofile_arcs, Flag, f_Group, INVALID, 0, 0, 0, 0)
+OPTION("-fprofile-generate", fprofile_generate, Flag, f_Group, INVALID, 0, 0, 0, 0)
+OPTION("-framework", framework, Separate, INVALID, INVALID, LinkerInput, 0, 0, 0)
+OPTION("-frtti", frtti, Flag, f_Group, INVALID, 0, 0, 0, 0)
+OPTION("-fshort-wchar", fshort_wchar, Flag, f_Group, INVALID, 0, 0, 0, 0)
+OPTION("-fshow-source-location", fshow_source_location, Flag, f_Group, INVALID, 0, 0, 0, 0)
+OPTION("-fsigned-bitfields", fsigned_bitfields, Flag, f_Group, INVALID, 0, 0, 0, 0)
+OPTION("-fsigned-char", fsigned_char, Flag, f_Group, INVALID, 0, 0, 0, 0)
+OPTION("-fstack-protector-all", fstack_protector_all, Flag, f_Group, INVALID, 0, 0, 0, 0)
+OPTION("-fstack-protector", fstack_protector, Flag, f_Group, INVALID, 0, 0, 0, 0)
+OPTION("-fstrict-aliasing", fstrict_aliasing, Flag, clang_ignored_f_Group, INVALID, 0, 0, 0, 0)
+OPTION("-fsyntax-only", fsyntax_only, Flag, INVALID, INVALID, DriverOption, 0, 0, 0)
+OPTION("-ftemplate-depth-", ftemplate_depth_, Joined, f_Group, INVALID, 0, 0, 0, 0)
+OPTION("-fterminated-vtables", fterminated_vtables, Flag, f_Group, INVALID, 0, 0, 0, 0)
+OPTION("-ftime-report", ftime_report, Flag, f_Group, INVALID, 0, 0, 0, 0)
+OPTION("-ftrapv", ftrapv, Flag, f_Group, INVALID, 0, 0, 0, 0)
+OPTION("-funit-at-a-time", funit_at_a_time, Flag, f_Group, INVALID, 0, 0, 0, 0)
+OPTION("-funsigned-bitfields", funsigned_bitfields, Flag, f_Group, INVALID, 0, 0, 0, 0)
+OPTION("-funsigned-char", funsigned_char, Flag, f_Group, INVALID, 0, 0, 0, 0)
+OPTION("-funwind-tables", funwind_tables, Flag, f_Group, INVALID, 0, 0, 0, 0)
+OPTION("-fverbose-asm", fverbose_asm, Flag, f_Group, INVALID, 0, 0, 0, 0)
+OPTION("-fvisibility=", fvisibility_EQ, Joined, f_Group, INVALID, 0, 0, 0, 0)
+OPTION("-fwritable-strings", fwritable_strings, Flag, f_Group, INVALID, 0, 0, 0, 0)
+OPTION("-fzero-initialized-in-bss", fzero_initialized_in_bss, Flag, f_Group, INVALID, 0, 0, 0, 0)
+OPTION("-f", f, Joined, f_Group, INVALID, 0, 0, 0, 0)
+OPTION("-g0", g0, Joined, g_Group, INVALID, 0, 0, 0, 0)
+OPTION("-g3", g3, Joined, g_Group, INVALID, 0, 0, 0, 0)
+OPTION("-gfull", gfull, Joined, g_Group, INVALID, 0, 0, 0, 0)
+OPTION("-gstabs", gstabs, Joined, g_Group, INVALID, 0, 0, 0, 0)
+OPTION("-gused", gused, Joined, g_Group, INVALID, 0, 0, 0, 0)
+OPTION("-g", g_Flag, Flag, g_Group, INVALID, 0, 0, 0, 0)
+OPTION("-g", g_Joined, Joined, g_Group, INVALID, 0, 0, 0, 0)
+OPTION("-headerpad_max_install_names", headerpad__max__install__names, Joined, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("-idirafter", idirafter, JoinedOrSeparate, clang_i_Group, INVALID, 0, 0, 0, 0)
+OPTION("-iframework", iframework, JoinedOrSeparate, clang_i_Group, INVALID, 0, 0, 0, 0)
+OPTION("-imacros", imacros, JoinedOrSeparate, clang_i_Group, INVALID, 0, 0, 0, 0)
+OPTION("-image_base", image__base, Separate, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("-include", include, JoinedOrSeparate, clang_i_Group, INVALID, 0, 0, 0, 0)
+OPTION("-init", init, Separate, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("-install_name", install__name, Separate, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("-iprefix", iprefix, JoinedOrSeparate, clang_i_Group, INVALID, 0, 0, 0, 0)
+OPTION("-iquote", iquote, JoinedOrSeparate, clang_i_Group, INVALID, 0, 0, 0, 0)
+OPTION("-isysroot", isysroot, JoinedOrSeparate, i_Group, INVALID, 0, 0, 0, 0)
+OPTION("-isystem", isystem, JoinedOrSeparate, clang_i_Group, INVALID, 0, 0, 0, 0)
+OPTION("-iwithprefixbefore", iwithprefixbefore, JoinedOrSeparate, clang_i_Group, INVALID, 0, 0, 0, 0)
+OPTION("-iwithprefix", iwithprefix, JoinedOrSeparate, clang_i_Group, INVALID, 0, 0, 0, 0)
+OPTION("-iwithsysroot", iwithsysroot, JoinedOrSeparate, i_Group, INVALID, 0, 0, 0, 0)
+OPTION("-i", i, Joined, i_Group, INVALID, 0, 0, 0, 0)
+OPTION("-keep_private_externs", keep__private__externs, Flag, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("-l", l, JoinedOrSeparate, INVALID, INVALID, LinkerInput, 0, 0, 0)
+OPTION("-m32", m32, Flag, m_Group, INVALID, DriverOption, 0, 0, 0)
+OPTION("-m3dnowa", m3dnowa, Flag, m_x86_Features_Group, INVALID, 0, 0, 0, 0)
+OPTION("-m3dnow", m3dnow, Flag, m_x86_Features_Group, INVALID, 0, 0, 0, 0)
+OPTION("-m64", m64, Flag, m_Group, INVALID, DriverOption, 0, 0, 0)
+OPTION("-mabi=", mabi_EQ, Joined, m_Group, INVALID, DriverOption, 0, 0, 0)
+OPTION("-march=", march_EQ, Joined, m_Group, INVALID, DriverOption, 0, 0, 0)
+OPTION("-mcmodel=", mcmodel_EQ, Joined, m_Group, INVALID, DriverOption, 0, 0, 0)
+OPTION("-mconstant-cfstrings", mconstant_cfstrings, Flag, clang_ignored_m_Group, INVALID, 0, 0, 0, 0)
+OPTION("-mcpu=", mcpu_EQ, Joined, m_Group, INVALID, DriverOption, 0, 0, 0)
+OPTION("-mdynamic-no-pic", mdynamic_no_pic, Joined, m_Group, INVALID, NoArgumentUnused, 0, 0, 0)
+OPTION("-mfix-and-continue", mfix_and_continue, Flag, clang_ignored_m_Group, INVALID, 0, 0, 0, 0)
+OPTION("-mfloat-abi=", mfloat_abi_EQ, Joined, m_Group, INVALID, 0, 0, 0, 0)
+OPTION("-mhard-float", mhard_float, Flag, m_Group, INVALID, 0, 0, 0, 0)
+OPTION("-miphoneos-version-min=", miphoneos_version_min_EQ, Joined, m_Group, INVALID, 0, 0, 0, 0)
+OPTION("-mkernel", mkernel, Flag, m_Group, INVALID, 0, 0, 0, 0)
+OPTION("-mllvm", mllvm, Separate, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("-mmacosx-version-min=", mmacosx_version_min_EQ, Joined, m_Group, INVALID, 0, 0, 0, 0)
+OPTION("-mmmx", mmmx, Flag, m_x86_Features_Group, INVALID, 0, 0, 0, 0)
+OPTION("-mno-3dnowa", mno_3dnowa, Flag, m_x86_Features_Group, INVALID, 0, 0, 0, 0)
+OPTION("-mno-3dnow", mno_3dnow, Flag, m_x86_Features_Group, INVALID, 0, 0, 0, 0)
+OPTION("-mno-constant-cfstrings", mno_constant_cfstrings, Flag, m_Group, INVALID, 0, 0, 0, 0)
+OPTION("-mno-mmx", mno_mmx, Flag, m_x86_Features_Group, INVALID, 0, 0, 0, 0)
+OPTION("-mno-pascal-strings", mno_pascal_strings, Flag, m_Group, INVALID, 0, 0, 0, 0)
+OPTION("-mno-red-zone", mno_red_zone, Flag, m_Group, INVALID, 0, 0, 0, 0)
+OPTION("-mno-soft-float", mno_soft_float, Flag, m_Group, INVALID, 0, 0, 0, 0)
+OPTION("-mno-sse2", mno_sse2, Flag, m_x86_Features_Group, INVALID, 0, 0, 0, 0)
+OPTION("-mno-sse3", mno_sse3, Flag, m_x86_Features_Group, INVALID, 0, 0, 0, 0)
+OPTION("-mno-sse4a", mno_sse4a, Flag, m_x86_Features_Group, INVALID, 0, 0, 0, 0)
+OPTION("-mno-sse4", mno_sse4, Flag, m_x86_Features_Group, INVALID, 0, 0, 0, 0)
+OPTION("-mno-sse", mno_sse, Flag, m_x86_Features_Group, INVALID, 0, 0, 0, 0)
+OPTION("-mno-ssse3", mno_ssse3, Flag, m_x86_Features_Group, INVALID, 0, 0, 0, 0)
+OPTION("-mno-thumb", mno_thumb, Flag, m_Group, INVALID, 0, 0, 0, 0)
+OPTION("-mno-warn-nonportable-cfstrings", mno_warn_nonportable_cfstrings, Flag, m_Group, INVALID, 0, 0, 0, 0)
+OPTION("-mpascal-strings", mpascal_strings, Flag, m_Group, INVALID, 0, 0, 0, 0)
+OPTION("-mred-zone", mred_zone, Flag, m_Group, INVALID, 0, 0, 0, 0)
+OPTION("-msoft-float", msoft_float, Flag, m_Group, INVALID, 0, 0, 0, 0)
+OPTION("-msse2", msse2, Flag, m_x86_Features_Group, INVALID, 0, 0, 0, 0)
+OPTION("-msse3", msse3, Flag, m_x86_Features_Group, INVALID, 0, 0, 0, 0)
+OPTION("-msse4a", msse4a, Flag, m_x86_Features_Group, INVALID, 0, 0, 0, 0)
+OPTION("-msse4", msse4, Flag, m_x86_Features_Group, INVALID, 0, 0, 0, 0)
+OPTION("-msse", msse, Flag, m_x86_Features_Group, INVALID, 0, 0, 0, 0)
+OPTION("-mssse3", mssse3, Flag, m_x86_Features_Group, INVALID, 0, 0, 0, 0)
+OPTION("-mthumb", mthumb, Flag, m_Group, INVALID, 0, 0, 0, 0)
+OPTION("-mtune=", mtune_EQ, Joined, m_Group, INVALID, 0, 0, 0, 0)
+OPTION("-multi_module", multi__module, Flag, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("-multiply_defined_unused", multiply__defined__unused, Separate, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("-multiply_defined", multiply__defined, Separate, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("-mwarn-nonportable-cfstrings", mwarn_nonportable_cfstrings, Flag, m_Group, INVALID, 0, 0, 0, 0)
+OPTION("-m", m_Separate, Separate, m_Group, INVALID, 0, 0, 0, 0)
+OPTION("-m", m_Joined, Joined, m_Group, INVALID, 0, 0, 0, 0)
+OPTION("-no-cpp-precomp", no_cpp_precomp, Flag, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("-no-integrated-cpp", no_integrated_cpp, Flag, INVALID, INVALID, DriverOption, 0, 0, 0)
+OPTION("-no_dead_strip_inits_and_terms", no__dead__strip__inits__and__terms, Flag, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("-nobuiltininc", nobuiltininc, Flag, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("-nodefaultlibs", nodefaultlibs, Flag, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("-nofixprebinding", nofixprebinding, Flag, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("-nolibc", nolibc, Flag, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("-nomultidefs", nomultidefs, Flag, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("-noprebind", noprebind, Flag, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("-noseglinkedit", noseglinkedit, Flag, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("-nostartfiles", nostartfiles, Flag, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("-nostdinc", nostdinc, Flag, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("-nostdlib", nostdlib, Flag, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("-object", object, Flag, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("-o", o, JoinedOrSeparate, INVALID, INVALID, DriverOption | RenderAsInput, 0,
        "Write output to <file>", "<file>")
-OPTION("-pagezero_size", pagezero__size, JoinedOrSeparate, INVALID, INVALID, "", 0, 0, 0)
-OPTION("-pass-exit-codes", pass_exit_codes, Flag, INVALID, INVALID, "u", 0, 0, 0)
-OPTION("-pedantic-errors", pedantic_errors, Flag, pedantic_Group, INVALID, "", 0, 0, 0)
-OPTION("-pedantic", pedantic, Flag, pedantic_Group, INVALID, "", 0, 0, 0)
-OPTION("-pg", pg, Flag, INVALID, INVALID, "", 0, 0, 0)
-OPTION("-pipe", pipe, Flag, INVALID, INVALID, "", 0, 
+OPTION("-pagezero_size", pagezero__size, JoinedOrSeparate, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("-pass-exit-codes", pass_exit_codes, Flag, INVALID, INVALID, Unsupported, 0, 0, 0)
+OPTION("-pedantic-errors", pedantic_errors, Flag, pedantic_Group, INVALID, 0, 0, 0, 0)
+OPTION("-pedantic", pedantic, Flag, pedantic_Group, INVALID, 0, 0, 0, 0)
+OPTION("-pg", pg, Flag, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("-pipe", pipe, Flag, INVALID, INVALID, 0, 0,
        "Use pipes between commands, when possible", 0)
-OPTION("-prebind_all_twolevel_modules", prebind__all__twolevel__modules, Flag, INVALID, INVALID, "", 0, 0, 0)
-OPTION("-prebind", prebind, Flag, INVALID, INVALID, "", 0, 0, 0)
-OPTION("-preload", preload, Flag, INVALID, INVALID, "", 0, 0, 0)
-OPTION("-print-file-name=", print_file_name_EQ, Joined, INVALID, INVALID, "", 0,
+OPTION("-prebind_all_twolevel_modules", prebind__all__twolevel__modules, Flag, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("-prebind", prebind, Flag, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("-preload", preload, Flag, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("-print-file-name=", print_file_name_EQ, Joined, INVALID, INVALID, 0, 0,
        "Print the full library path of <file>", "<file>")
-OPTION("-print-ivar-layout", print_ivar_layout, Flag, INVALID, INVALID, "", 0, 0, 0)
-OPTION("-print-libgcc-file-name", print_libgcc_file_name, Flag, INVALID, INVALID, "", 0, 
+OPTION("-print-ivar-layout", print_ivar_layout, Flag, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("-print-libgcc-file-name", print_libgcc_file_name, Flag, INVALID, INVALID, 0, 0,
        "Print the library path for \"libgcc.a\"", 0)
-OPTION("-print-multi-directory", print_multi_directory, Flag, INVALID, INVALID, "", 0, 0, 0)
-OPTION("-print-multi-lib", print_multi_lib, Flag, INVALID, INVALID, "", 0, 0, 0)
-OPTION("-print-multi-os-directory", print_multi_os_directory, Flag, INVALID, INVALID, "", 0, 0, 0)
-OPTION("-print-prog-name=", print_prog_name_EQ, Joined, INVALID, INVALID, "", 0,
+OPTION("-print-multi-directory", print_multi_directory, Flag, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("-print-multi-lib", print_multi_lib, Flag, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("-print-multi-os-directory", print_multi_os_directory, Flag, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("-print-prog-name=", print_prog_name_EQ, Joined, INVALID, INVALID, 0, 0,
        "Print the full program path of <name>", "<name>")
-OPTION("-print-search-dirs", print_search_dirs, Flag, INVALID, INVALID, "", 0, 
+OPTION("-print-search-dirs", print_search_dirs, Flag, INVALID, INVALID, 0, 0,
        "Print the paths used for finding libraries and programs", 0)
-OPTION("-private_bundle", private__bundle, Flag, INVALID, INVALID, "", 0, 0, 0)
-OPTION("-pthreads", pthreads, Flag, INVALID, INVALID, "", 0, 0, 0)
-OPTION("-pthread", pthread, Flag, INVALID, INVALID, "", 0, 0, 0)
-OPTION("-p", p, Flag, INVALID, INVALID, "", 0, 0, 0)
-OPTION("-read_only_relocs", read__only__relocs, Separate, INVALID, INVALID, "", 0, 0, 0)
-OPTION("-remap", remap, Flag, INVALID, INVALID, "", 0, 0, 0)
-OPTION("-rpath", rpath, Separate, INVALID, INVALID, "l", 0, 0, 0)
-OPTION("-r", r, Flag, INVALID, INVALID, "", 0, 0, 0)
-OPTION("-save-temps", save_temps, Flag, INVALID, INVALID, "d", 0, 
+OPTION("-private_bundle", private__bundle, Flag, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("-pthreads", pthreads, Flag, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("-pthread", pthread, Flag, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("-p", p, Flag, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("-read_only_relocs", read__only__relocs, Separate, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("-remap", remap, Flag, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("-rpath", rpath, Separate, INVALID, INVALID, LinkerInput, 0, 0, 0)
+OPTION("-r", r, Flag, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("-save-temps", save_temps, Flag, INVALID, INVALID, DriverOption, 0,
        "Save intermediate compilation results", 0)
-OPTION("-sectalign", sectalign, MultiArg, INVALID, INVALID, "", 3, 0, 0)
-OPTION("-sectcreate", sectcreate, MultiArg, INVALID, INVALID, "", 3, 0, 0)
-OPTION("-sectobjectsymbols", sectobjectsymbols, MultiArg, INVALID, INVALID, "", 2, 0, 0)
-OPTION("-sectorder", sectorder, MultiArg, INVALID, INVALID, "", 3, 0, 0)
-OPTION("-seg1addr", seg1addr, JoinedOrSeparate, INVALID, INVALID, "", 0, 0, 0)
-OPTION("-seg_addr_table_filename", seg__addr__table__filename, Separate, INVALID, INVALID, "", 0, 0, 0)
-OPTION("-seg_addr_table", seg__addr__table, Separate, INVALID, INVALID, "", 0, 0, 0)
-OPTION("-segaddr", segaddr, MultiArg, INVALID, INVALID, "", 2, 0, 0)
-OPTION("-segcreate", segcreate, MultiArg, INVALID, INVALID, "", 3, 0, 0)
-OPTION("-seglinkedit", seglinkedit, Flag, INVALID, INVALID, "", 0, 0, 0)
-OPTION("-segprot", segprot, MultiArg, INVALID, INVALID, "", 3, 0, 0)
-OPTION("-segs_read_only_addr", segs__read__only__addr, Separate, INVALID, INVALID, "", 0, 0, 0)
-OPTION("-segs_read_write_addr", segs__read__write__addr, Separate, INVALID, INVALID, "", 0, 0, 0)
-OPTION("-segs_read_", segs__read__, Joined, INVALID, INVALID, "", 0, 0, 0)
-OPTION("-shared-libgcc", shared_libgcc, Flag, INVALID, INVALID, "", 0, 0, 0)
-OPTION("-shared", shared, Flag, INVALID, INVALID, "", 0, 0, 0)
-OPTION("-single_module", single__module, Flag, INVALID, INVALID, "", 0, 0, 0)
-OPTION("-specs=", specs_EQ, Joined, INVALID, INVALID, "", 0, 0, 0)
-OPTION("-specs", specs, Separate, INVALID, INVALID, "u", 0, 0, 0)
-OPTION("-static-libgcc", static_libgcc, Flag, INVALID, INVALID, "", 0, 0, 0)
-OPTION("-static", static, Flag, INVALID, INVALID, "q", 0, 0, 0)
-OPTION("-std-default=", std_default_EQ, Joined, INVALID, INVALID, "", 0, 0, 0)
-OPTION("-std=", std_EQ, Joined, INVALID, INVALID, "", 0, 0, 0)
-OPTION("-sub_library", sub__library, JoinedOrSeparate, INVALID, INVALID, "", 0, 0, 0)
-OPTION("-sub_umbrella", sub__umbrella, JoinedOrSeparate, INVALID, INVALID, "", 0, 0, 0)
-OPTION("-s", s, Flag, INVALID, INVALID, "", 0, 0, 0)
-OPTION("-time", time, Flag, INVALID, INVALID, "", 0, 
+OPTION("-sectalign", sectalign, MultiArg, INVALID, INVALID, 0, 3, 0, 0)
+OPTION("-sectcreate", sectcreate, MultiArg, INVALID, INVALID, 0, 3, 0, 0)
+OPTION("-sectobjectsymbols", sectobjectsymbols, MultiArg, INVALID, INVALID, 0, 2, 0, 0)
+OPTION("-sectorder", sectorder, MultiArg, INVALID, INVALID, 0, 3, 0, 0)
+OPTION("-seg1addr", seg1addr, JoinedOrSeparate, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("-seg_addr_table_filename", seg__addr__table__filename, Separate, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("-seg_addr_table", seg__addr__table, Separate, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("-segaddr", segaddr, MultiArg, INVALID, INVALID, 0, 2, 0, 0)
+OPTION("-segcreate", segcreate, MultiArg, INVALID, INVALID, 0, 3, 0, 0)
+OPTION("-seglinkedit", seglinkedit, Flag, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("-segprot", segprot, MultiArg, INVALID, INVALID, 0, 3, 0, 0)
+OPTION("-segs_read_only_addr", segs__read__only__addr, Separate, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("-segs_read_write_addr", segs__read__write__addr, Separate, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("-segs_read_", segs__read__, Joined, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("-shared-libgcc", shared_libgcc, Flag, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("-shared", shared, Flag, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("-single_module", single__module, Flag, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("-specs=", specs_EQ, Joined, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("-specs", specs, Separate, INVALID, INVALID, Unsupported, 0, 0, 0)
+OPTION("-static-libgcc", static_libgcc, Flag, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("-static", static, Flag, INVALID, INVALID, NoArgumentUnused, 0, 0, 0)
+OPTION("-std-default=", std_default_EQ, Joined, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("-std=", std_EQ, Joined, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("-sub_library", sub__library, JoinedOrSeparate, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("-sub_umbrella", sub__umbrella, JoinedOrSeparate, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("-s", s, Flag, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("-time", time, Flag, INVALID, INVALID, 0, 0,
        "Time individual commands", 0)
-OPTION("-traditional-cpp", traditional_cpp, Flag, INVALID, INVALID, "", 0, 0, 0)
-OPTION("-traditional", traditional, Flag, INVALID, INVALID, "", 0, 0, 0)
-OPTION("-trigraphs", trigraphs, Flag, INVALID, INVALID, "", 0, 0, 0)
-OPTION("-twolevel_namespace_hints", twolevel__namespace__hints, Flag, INVALID, INVALID, "", 0, 0, 0)
-OPTION("-twolevel_namespace", twolevel__namespace, Flag, INVALID, INVALID, "", 0, 0, 0)
-OPTION("-t", t, Flag, INVALID, INVALID, "", 0, 0, 0)
-OPTION("-umbrella", umbrella, Separate, INVALID, INVALID, "", 0, 0, 0)
-OPTION("-undefined", undefined, JoinedOrSeparate, u_Group, INVALID, "", 0, 0, 0)
-OPTION("-undef", undef, Flag, u_Group, INVALID, "", 0, 0, 0)
-OPTION("-unexported_symbols_list", unexported__symbols__list, Separate, INVALID, INVALID, "", 0, 0, 0)
-OPTION("-u", u, JoinedOrSeparate, u_Group, INVALID, "", 0, 0, 0)
-OPTION("-v", v, Flag, INVALID, INVALID, "", 0, 
+OPTION("-traditional-cpp", traditional_cpp, Flag, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("-traditional", traditional, Flag, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("-trigraphs", trigraphs, Flag, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("-twolevel_namespace_hints", twolevel__namespace__hints, Flag, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("-twolevel_namespace", twolevel__namespace, Flag, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("-t", t, Flag, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("-umbrella", umbrella, Separate, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("-undefined", undefined, JoinedOrSeparate, u_Group, INVALID, 0, 0, 0, 0)
+OPTION("-undef", undef, Flag, u_Group, INVALID, 0, 0, 0, 0)
+OPTION("-unexported_symbols_list", unexported__symbols__list, Separate, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("-u", u, JoinedOrSeparate, u_Group, INVALID, 0, 0, 0, 0)
+OPTION("-v", v, Flag, INVALID, INVALID, 0, 0,
        "Show commands to run and use verbose output", 0)
-OPTION("-weak-l", weak_l, Joined, INVALID, INVALID, "l", 0, 0, 0)
-OPTION("-weak_framework", weak__framework, Separate, INVALID, INVALID, "l", 0, 0, 0)
-OPTION("-weak_library", weak__library, Separate, INVALID, INVALID, "l", 0, 0, 0)
-OPTION("-weak_reference_mismatches", weak__reference__mismatches, Separate, INVALID, INVALID, "", 0, 0, 0)
-OPTION("-whatsloaded", whatsloaded, Flag, INVALID, INVALID, "", 0, 0, 0)
-OPTION("-whyload", whyload, Flag, INVALID, INVALID, "", 0, 0, 0)
-OPTION("-w", w, Flag, INVALID, INVALID, "", 0, 0, 0)
-OPTION("-x", x, JoinedOrSeparate, INVALID, INVALID, "d", 0, 
+OPTION("-weak-l", weak_l, Joined, INVALID, INVALID, LinkerInput, 0, 0, 0)
+OPTION("-weak_framework", weak__framework, Separate, INVALID, INVALID, LinkerInput, 0, 0, 0)
+OPTION("-weak_library", weak__library, Separate, INVALID, INVALID, LinkerInput, 0, 0, 0)
+OPTION("-weak_reference_mismatches", weak__reference__mismatches, Separate, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("-whatsloaded", whatsloaded, Flag, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("-whyload", whyload, Flag, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("-w", w, Flag, INVALID, INVALID, 0, 0, 0, 0)
+OPTION("-x", x, JoinedOrSeparate, INVALID, INVALID, DriverOption, 0,
        "Treat subsequent input files as having type <language>", "<language>")
-OPTION("-y", y, Joined, INVALID, INVALID, "", 0, 0, 0)
+OPTION("-y", y, Joined, INVALID, INVALID, 0, 0, 0, 0)
index affd1c5aa9e58b4e52fdcbed5bfe4c5e35f91666..3391fe60c1afd7058accfc20111868e815b5ca34 100644 (file)
 using namespace clang::driver;
 using namespace clang::driver::options;
 
+enum DriverFlag {
+  DriverOption     = (1 << 0),
+  LinkerInput      = (1 << 1),
+  NoArgumentUnused = (1 << 2),
+  RenderAsInput    = (1 << 3),
+  RenderJoined     = (1 << 4),
+  RenderSeparate   = (1 << 5),
+  Unsupported      = (1 << 6)
+};
+
 struct Info {
   const char *Name;
-  const char *Flags;
   const char *HelpText;
   const char *MetaVar;
 
-  Option::OptionClass Kind;
-  unsigned GroupID;
-  unsigned AliasID;
-  unsigned Param;
+  unsigned char Kind;
+  unsigned char Flags;
+  unsigned char Param;
+  unsigned short GroupID;
+  unsigned short AliasID;
 };
 
 // Ordering on Info. The ordering is *almost* lexicographic, with two
@@ -74,14 +84,14 @@ static inline bool operator<(const Info &A, const Info &B) {
 
 static Info OptionInfos[] = {
   // The InputOption info
-  { "<input>", "d", 0, 0, Option::InputClass, OPT_INVALID, OPT_INVALID, 0 },
+  { "<input>", 0, 0, Option::InputClass, DriverOption, 0, OPT_INVALID, OPT_INVALID },
   // The UnknownOption info
-  { "<unknown>", "", 0, 0, Option::UnknownClass, OPT_INVALID, OPT_INVALID, 0 },
+  { "<unknown>", 0, 0, Option::UnknownClass, 0, 0, OPT_INVALID, OPT_INVALID },
 
 #define OPTION(NAME, ID, KIND, GROUP, ALIAS, FLAGS, PARAM, \
                HELPTEXT, METAVAR)   \
-  { NAME, FLAGS, HELPTEXT, METAVAR, \
-    Option::KIND##Class, OPT_##GROUP, OPT_##ALIAS, PARAM },
+  { NAME, HELPTEXT, METAVAR, Option::KIND##Class, FLAGS, PARAM, \
+    OPT_##GROUP, OPT_##ALIAS },
 #include "clang/Driver/Options.def"
 };
 static const unsigned numOptions = sizeof(OptionInfos) / sizeof(OptionInfos[0]);
@@ -110,7 +120,7 @@ OptTable::OptTable() : Options(new Option*[numOptions]) {
   // Check that everything after the first searchable option is a
   // regular option class.
   for (unsigned i = FirstSearchableOption; i < LastOption; ++i) {
-    Option::OptionClass Kind = getInfo(i).Kind;
+    Option::OptionClass Kind = (Option::OptionClass) getInfo(i).Kind;
     assert((Kind != Option::InputClass && Kind != Option::UnknownClass &&
             Kind != Option::GroupClass) &&
            "Special options should be defined first!");
@@ -196,22 +206,24 @@ Option *OptTable::constructOption(options::ID id) const {
     Opt = new JoinedAndSeparateOption(id, info.Name, Group, Alias); break;
   }
 
-  for (const char *s = info.Flags; *s; ++s) {
-    switch (*s) {
-    default: assert(0 && "Invalid option flag.");
-    case 'J':
-      assert(info.Kind == Option::SeparateClass && "Invalid option.");
-      Opt->setForceJoinedRender(true); break;
-    case 'S':
-      assert(info.Kind == Option::JoinedClass && "Invalid option.");
-      Opt->setForceSeparateRender(true); break;
-    case 'd': Opt->setDriverOption(true); break;
-    case 'i': Opt->setNoOptAsInput(true); break;
-    case 'l': Opt->setLinkerInput(true); break;
-    case 'q': Opt->setNoArgumentUnused(true); break;
-    case 'u': Opt->setUnsupported(true); break;
-    }
+  if (info.Flags & DriverOption)
+    Opt->setDriverOption(true);
+  if (info.Flags & LinkerInput)
+    Opt->setLinkerInput(true);
+  if (info.Flags & NoArgumentUnused)
+    Opt->setNoArgumentUnused(true);
+  if (info.Flags & RenderAsInput)
+    Opt->setNoOptAsInput(true);
+  if (info.Flags & RenderJoined) {
+    assert(info.Kind == Option::SeparateClass && "Invalid option.");
+    Opt->setForceJoinedRender(true);
+  }
+  if (info.Flags & RenderSeparate) {
+    assert(info.Kind == Option::JoinedClass && "Invalid option.");
+    Opt->setForceSeparateRender(true);
   }
+  if (info.Flags & Unsupported)
+    Opt->setUnsupported(true);
 
   return Opt;
 }