#ifdef DRIVERSTART
__DRIVERSTART = DIAG_START_DRIVER,
#undef DRIVERSTART
#endif

DIAG(err_analyzer_config_multiple_values, CLASS_ERROR, diag::MAP_ERROR, "analyzer-config option '%0' should contain only one '='", 0, SFINAE_SubstitutionFailure, false, false, 0)
DIAG(err_analyzer_config_no_value, CLASS_ERROR, diag::MAP_ERROR, "analyzer-config option '%0' has a key but no value", 0, SFINAE_SubstitutionFailure, false, false, 0)
DIAG(err_arc_unsupported_on_runtime, CLASS_ERROR, diag::MAP_ERROR, "-fobjc-arc is not supported on platforms using the legacy runtime", 0, SFINAE_SubstitutionFailure, false, false, 0)
DIAG(err_arc_unsupported_on_toolchain, CLASS_ERROR, diag::MAP_ERROR, "-fobjc-arc is not supported on versions of OS X prior to 10.6", 0, SFINAE_SubstitutionFailure, false, false, 0)
DIAG(err_drv_I_dash_not_supported, CLASS_ERROR, diag::MAP_ERROR, "'%0' not supported, please use -iquote instead", 0, SFINAE_SubstitutionFailure, false, false, 0)
DIAG(err_drv_argument_not_allowed_with, CLASS_ERROR, diag::MAP_ERROR, "invalid argument '%0' not allowed with '%1'", 0, SFINAE_SubstitutionFailure, false, false, 0)
DIAG(err_drv_argument_only_allowed_with, CLASS_ERROR, diag::MAP_ERROR, "invalid argument '%0' only allowed with '%1'", 0, SFINAE_SubstitutionFailure, false, false, 0)
DIAG(err_drv_cc_print_options_failure, CLASS_ERROR, diag::MAP_ERROR, "unable to open CC_PRINT_OPTIONS file: %0", 0, SFINAE_SubstitutionFailure, false, false, 0)
DIAG(err_drv_clang_unsupported, CLASS_ERROR, diag::MAP_ERROR, "the clang compiler does not support '%0'", 0, SFINAE_SubstitutionFailure, false, false, 0)
DIAG(err_drv_clang_unsupported_opt_cxx_darwin_i386, CLASS_ERROR, diag::MAP_ERROR, "the clang compiler does not support '%0' for C++ on Darwin/i386", 0, SFINAE_SubstitutionFailure, false, false, 0)
DIAG(err_drv_clang_unsupported_per_platform, CLASS_ERROR, diag::MAP_ERROR, "the clang compiler does not support '%0' on this platform", 0, SFINAE_SubstitutionFailure, false, false, 0)
DIAG(err_drv_command_failed, CLASS_ERROR, diag::MAP_ERROR, "%0 command failed with exit code %1 (use -v to see invocation)", 0, SFINAE_SubstitutionFailure, false, false, 0)
DIAG(err_drv_command_failure, CLASS_ERROR, diag::MAP_ERROR, "unable to execute command: %0", 0, SFINAE_SubstitutionFailure, false, false, 0)
DIAG(err_drv_command_signalled, CLASS_ERROR, diag::MAP_ERROR, "%0 command failed due to signal (use -v to see invocation)", 0, SFINAE_SubstitutionFailure, false, false, 0)
DIAG(err_drv_conflicting_deployment_targets, CLASS_ERROR, diag::MAP_ERROR, "conflicting deployment targets, both '%0' and '%1' are present in environment", 0, SFINAE_SubstitutionFailure, false, false, 0)
DIAG(err_drv_emit_llvm_link, CLASS_ERROR, diag::MAP_ERROR, "-emit-llvm cannot be used when linking", 0, SFINAE_SubstitutionFailure, false, false, 0)
DIAG(err_drv_force_crash, CLASS_ERROR, diag::MAP_ERROR, "failing because environment variable '%0' is set", 0, SFINAE_SubstitutionFailure, false, false, 0)
DIAG(err_drv_invalid_Xarch_argument_isdriver, CLASS_ERROR, diag::MAP_ERROR, "invalid Xarch argument: '%0', cannot change driver behavior inside Xarch argument", 0, SFINAE_SubstitutionFailure, false, false, 0)
DIAG(err_drv_invalid_Xarch_argument_with_args, CLASS_ERROR, diag::MAP_ERROR, "invalid Xarch argument: '%0', options requiring arguments are unsupported", 0, SFINAE_SubstitutionFailure, false, false, 0)
DIAG(err_drv_invalid_arch_for_deployment_target, CLASS_ERROR, diag::MAP_ERROR, "invalid architecture '%0' for deployment target '%1'", 0, SFINAE_SubstitutionFailure, false, false, 0)
DIAG(err_drv_invalid_arch_name, CLASS_ERROR, diag::MAP_ERROR, "invalid arch name '%0'", 0, SFINAE_SubstitutionFailure, false, false, 0)
DIAG(err_drv_invalid_darwin_version, CLASS_ERROR, diag::MAP_ERROR, "invalid Darwin version number: %0", 0, SFINAE_SubstitutionFailure, false, false, 0)
DIAG(err_drv_invalid_gcc_output_type, CLASS_ERROR, diag::MAP_ERROR, "invalid output type '%0' for use with gcc tool", 0, SFINAE_SubstitutionFailure, false, false, 0)
DIAG(err_drv_invalid_int_value, CLASS_ERROR, diag::MAP_ERROR, "invalid integral value '%1' in '%0'", 0, SFINAE_SubstitutionFailure, false, false, 0)
DIAG(err_drv_invalid_libcxx_deployment, CLASS_ERROR, diag::MAP_ERROR, "invalid deployment target for -stdlib=libc++ (requires %0 or later)", 0, SFINAE_SubstitutionFailure, false, false, 0)
DIAG(err_drv_invalid_mfloat_abi, CLASS_ERROR, diag::MAP_ERROR, "invalid float ABI '%0'", 0, SFINAE_SubstitutionFailure, false, false, 0)
DIAG(err_drv_invalid_output_with_multiple_archs, CLASS_ERROR, diag::MAP_ERROR, "cannot use '%0' output with multiple -arch options", 0, SFINAE_SubstitutionFailure, false, false, 0)
DIAG(err_drv_invalid_remap_file, CLASS_ERROR, diag::MAP_ERROR, "invalid option '%0' not of the form <from-file>;<to-file>", 0, SFINAE_SubstitutionFailure, false, false, 0)
DIAG(err_drv_invalid_rtlib_name, CLASS_ERROR, diag::MAP_ERROR, "invalid runtime library name in argument '%0'", 0, SFINAE_SubstitutionFailure, false, false, 0)
DIAG(err_drv_invalid_stdlib_name, CLASS_ERROR, diag::MAP_ERROR, "invalid library name in argument '%0'", 0, SFINAE_SubstitutionFailure, false, false, 0)
DIAG(err_drv_invalid_value, CLASS_ERROR, diag::MAP_ERROR, "invalid value '%1' in '%0'", 0, SFINAE_SubstitutionFailure, false, false, 0)
DIAG(err_drv_invalid_version_number, CLASS_ERROR, diag::MAP_ERROR, "invalid version number in '%0'", 0, SFINAE_SubstitutionFailure, false, false, 0)
DIAG(err_drv_malformed_sanitizer_blacklist, CLASS_ERROR, diag::MAP_ERROR, "malformed sanitizer blacklist: '%0'", 0, SFINAE_SubstitutionFailure, false, false, 0)
DIAG(err_drv_mg_requires_m_or_mm, CLASS_ERROR, diag::MAP_ERROR, "option '-MG' requires '-M' or '-MM'", 0, SFINAE_SubstitutionFailure, false, false, 0)
DIAG(err_drv_missing_argument, CLASS_ERROR, diag::MAP_ERROR, "argument to '%0' is missing (expected %1 value%s1)", 0, SFINAE_SubstitutionFailure, false, false, 0)
DIAG(err_drv_no_ast_support, CLASS_ERROR, diag::MAP_ERROR, "'%0': unable to use AST files with this tool", 0, SFINAE_SubstitutionFailure, false, false, 0)
DIAG(err_drv_no_input_files, CLASS_ERROR, diag::MAP_ERROR, "no input files", 0, SFINAE_SubstitutionFailure, false, false, 0)
DIAG(err_drv_no_linker_llvm_support, CLASS_ERROR, diag::MAP_ERROR, "'%0': unable to pass LLVM bit-code files to linker", 0, SFINAE_SubstitutionFailure, false, false, 0)
DIAG(err_drv_no_module_support, CLASS_ERROR, diag::MAP_ERROR, "'%0': unable to use module files with this tool", 0, SFINAE_SubstitutionFailure, false, false, 0)
DIAG(err_drv_no_such_file, CLASS_ERROR, diag::MAP_ERROR, "no such file or directory: '%0'", 0, SFINAE_SubstitutionFailure, false, false, 0)
DIAG(err_drv_objc_gc_arr, CLASS_ERROR, diag::MAP_ERROR, "cannot specify both '-fobjc-arc' and '%0'", 0, SFINAE_SubstitutionFailure, false, false, 0)
DIAG(err_drv_out_file_argument_with_multiple_sources, CLASS_ERROR, diag::MAP_ERROR, "cannot specify '%0%1' when compiling multiple source files", 0, SFINAE_SubstitutionFailure, false, false, 0)
DIAG(err_drv_output_argument_with_multiple_files, CLASS_ERROR, diag::MAP_ERROR, "cannot specify -o when generating multiple output files", 0, SFINAE_SubstitutionFailure, false, false, 0)
DIAG(err_drv_preamble_format, CLASS_ERROR, diag::MAP_ERROR, "incorrect format for -preamble-bytes=N,END", 0, SFINAE_SubstitutionFailure, false, false, 0)
DIAG(err_drv_unable_to_remove_file, CLASS_ERROR, diag::MAP_ERROR, "unable to remove file: %0", 0, SFINAE_SubstitutionFailure, false, false, 0)
DIAG(err_drv_unknown_argument, CLASS_ERROR, diag::MAP_ERROR, "unknown argument: '%0'", 0, SFINAE_SubstitutionFailure, false, false, 0)
DIAG(err_drv_unknown_language, CLASS_ERROR, diag::MAP_ERROR, "language not recognized: '%0'", 0, SFINAE_SubstitutionFailure, false, false, 0)
DIAG(err_drv_unknown_objc_runtime, CLASS_ERROR, diag::MAP_ERROR, "unknown or ill-formed Objective-C runtime '%0'", 0, SFINAE_SubstitutionFailure, false, false, 0)
DIAG(err_drv_unknown_stdin_type, CLASS_ERROR, diag::MAP_ERROR, "-E or -x required when input is from standard input", 0, SFINAE_SubstitutionFailure, false, false, 0)
DIAG(err_drv_unknown_toolchain, CLASS_ERROR, diag::MAP_ERROR, "cannot recognize the type of the toolchain", 0, SFINAE_SubstitutionFailure, false, false, 0)
DIAG(err_drv_unsupported_opt, CLASS_ERROR, diag::MAP_ERROR, "unsupported option '%0'", 0, SFINAE_SubstitutionFailure, false, false, 0)
DIAG(err_drv_unsupported_opt_for_target, CLASS_ERROR, diag::MAP_ERROR, "unsupported option '%0' for target '%1'", 0, SFINAE_SubstitutionFailure, false, false, 0)
DIAG(err_drv_unsupported_option_argument, CLASS_ERROR, diag::MAP_ERROR, "unsupported argument '%1' to option '%0'", 0, SFINAE_SubstitutionFailure, false, false, 0)
DIAG(err_drv_unsupported_rtlib_for_platform, CLASS_ERROR, diag::MAP_ERROR, "unsupported runtime library '%0' for platform '%1'", 0, SFINAE_SubstitutionFailure, false, false, 0)
DIAG(err_drv_use_of_Z_option, CLASS_ERROR, diag::MAP_ERROR, "unsupported use of internal gcc -Z option '%0'", 0, SFINAE_SubstitutionFailure, false, false, 0)
DIAG(err_no_external_assembler, CLASS_ERROR, diag::MAP_ERROR, "there is no external assembler that can be used on this platform", 0, SFINAE_SubstitutionFailure, false, false, 0)
DIAG(note_drv_command_failed_diag_msg, CLASS_NOTE, diag::MAP_FATAL, "diagnostic msg: %0", 0, SFINAE_Suppress, false, false, 0)
DIAG(note_drv_t_option_is_global, CLASS_NOTE, diag::MAP_FATAL, "The last /TC or /TP option takes precedence over earlier instances", 0, SFINAE_Suppress, false, false, 0)
DIAG(warn_O4_is_O3, CLASS_WARNING, diag::MAP_WARNING, "-O4 is equivalent to -O3", 100, SFINAE_Suppress, false, false, 20)
DIAG(warn_c_kext, CLASS_WARNING, diag::MAP_WARNING, "ignoring -fapple-kext which is valid for C++ and Objective-C++ only", 0, SFINAE_Suppress, false, false, 0)
DIAG(warn_drv_assuming_mfloat_abi_is, CLASS_WARNING, diag::MAP_WARNING, "unknown platform, assuming -mfloat-abi=%0", 0, SFINAE_Suppress, false, false, 0)
DIAG(warn_drv_clang_unsupported, CLASS_WARNING, diag::MAP_WARNING, "the clang compiler does not support '%0'", 0, SFINAE_Suppress, false, false, 0)
DIAG(warn_drv_deprecated_arg, CLASS_WARNING, diag::MAP_WARNING, "argument '%0' is deprecated, use '%1' instead", 100, SFINAE_Suppress, false, false, 20)
DIAG(warn_drv_empty_joined_argument, CLASS_WARNING, diag::MAP_WARNING, "joined argument expects additional value: '%0'", 422, SFINAE_Suppress, false, false, 0)
DIAG(warn_drv_input_file_unused, CLASS_WARNING, diag::MAP_WARNING, "%0: '%1' input unused%select{ when '%3' is present|}2", 422, SFINAE_Suppress, false, false, 0)
DIAG(warn_drv_input_file_unused_by_cpp, CLASS_WARNING, diag::MAP_WARNING, "%0: '%1' input unused in cpp mode", 422, SFINAE_Suppress, false, false, 0)
DIAG(warn_drv_objc_gc_unsupported, CLASS_WARNING, diag::MAP_WARNING, "Objective-C garbage collection is not supported on this platform, ignoring '%0'", 0, SFINAE_Suppress, false, false, 0)
DIAG(warn_drv_optimization_value, CLASS_WARNING, diag::MAP_WARNING, "optimization level '%0' is unsupported; using '%1%2' instead", 213, SFINAE_Suppress, false, false, 0)
DIAG(warn_drv_overriding_flag_option, CLASS_WARNING, diag::MAP_WARNING, "overriding '%0' option with '%1'", 306, SFINAE_Suppress, false, false, 0)
DIAG(warn_drv_pch_not_first_include, CLASS_WARNING, diag::MAP_WARNING, "precompiled header '%0' was ignored because '%1' is not first '-include'", 0, SFINAE_Suppress, false, false, 0)
DIAG(warn_drv_preprocessed_input_file_unused, CLASS_WARNING, diag::MAP_WARNING, "%0: previously preprocessed input%select{ unused when '%2' is present|}1", 422, SFINAE_Suppress, false, false, 0)
DIAG(warn_drv_treating_input_as_cxx, CLASS_WARNING, diag::MAP_WARNING, "treating '%0' input as '%1' when in C++ mode, this behavior is deprecated", 100, SFINAE_Suppress, false, false, 20)
DIAG(warn_drv_unused_argument, CLASS_WARNING, diag::MAP_WARNING, "argument unused during compilation: '%0'", 422, SFINAE_Suppress, false, false, 0)
DIAG(warn_drv_unused_sanitizer, CLASS_WARNING, diag::MAP_WARNING, "'%0' is ignored in absence of '%1'", 434, SFINAE_Suppress, false, false, 0)
DIAG(warn_ignoring_ftabstop_value, CLASS_WARNING, diag::MAP_WARNING, "ignoring invalid -ftabstop value '%0', using default value %1", 0, SFINAE_Suppress, false, false, 0)
DIAG(warn_missing_sysroot, CLASS_WARNING, diag::MAP_WARNING, "no such sysroot directory: '%0'", 252, SFINAE_Suppress, false, false, 0)
