// Generated from compilers/msvc.yaml -- DO NOT EDIT
static MSVC_FLAGS: [FlagRule; 133] = [
    FlagRule::new(FlagPattern::Exactly("/external:anglebrackets", 0), ArgumentKind::Other(PassEffect::None)),
    FlagRule::new(FlagPattern::Exactly("/Qfast_transcendentals", 0), ArgumentKind::Other(PassEffect::Configures(CompilerPass::Compiling))),
    FlagRule::new(FlagPattern::ExactlyWithColon("/execution-charset"), ArgumentKind::Other(PassEffect::Configures(CompilerPass::Compiling))),
    FlagRule::new(FlagPattern::Exactly("/validate-charset", 0), ArgumentKind::Other(PassEffect::Configures(CompilerPass::Compiling))),
    FlagRule::new(FlagPattern::ExactlyWithColon("/source-charset"), ArgumentKind::Other(PassEffect::Configures(CompilerPass::Compiling))),
    FlagRule::new(FlagPattern::Exactly("/Qspectre-load", 0), ArgumentKind::Other(PassEffect::Configures(CompilerPass::Compiling))),
    FlagRule::new(FlagPattern::ExactlyWithColon("/external:env"), ArgumentKind::Other(PassEffect::Configures(CompilerPass::Preprocessing))),
    FlagRule::new(FlagPattern::Exactly("/showIncludes", 0), ArgumentKind::Other(PassEffect::Configures(CompilerPass::Preprocessing))),
    FlagRule::new(FlagPattern::Exactly("/await:strict", 0), ArgumentKind::Other(PassEffect::Configures(CompilerPass::Compiling))),
    FlagRule::new(FlagPattern::Exactly("/permissive-", 0), ArgumentKind::Other(PassEffect::Configures(CompilerPass::Compiling))),
    FlagRule::new(FlagPattern::ExactlyWithColon("/Qvec-report"), ArgumentKind::Other(PassEffect::Configures(CompilerPass::Compiling))),
    FlagRule::new(FlagPattern::ExactlyWithColon("/diagnostics"), ArgumentKind::Other(PassEffect::None)),
    FlagRule::new(FlagPattern::ExactlyWithColon("/errorReport"), ArgumentKind::Other(PassEffect::None)),
    FlagRule::new(FlagPattern::ExactlyWithGluedOrSep("/external:I"), ArgumentKind::Other(PassEffect::Configures(CompilerPass::Preprocessing))),
    FlagRule::new(FlagPattern::Prefix("/external:W", 0), ArgumentKind::Other(PassEffect::None)),
    FlagRule::new(FlagPattern::ExactlyWithColon("/constexpr"), ArgumentKind::Other(PassEffect::Configures(CompilerPass::Compiling))),
    FlagRule::new(FlagPattern::ExactlyWithColon("/volatile"), ArgumentKind::Other(PassEffect::Configures(CompilerPass::Compiling))),
    FlagRule::new(FlagPattern::Exactly("/Qspectre", 0), ArgumentKind::Other(PassEffect::Configures(CompilerPass::Compiling))),
    FlagRule::new(FlagPattern::Exactly("/analyze-", 0), ArgumentKind::Other(PassEffect::Configures(CompilerPass::Compiling))),
    FlagRule::new(FlagPattern::ExactlyWithColon("/analyze"), ArgumentKind::Other(PassEffect::Configures(CompilerPass::Compiling))),
    FlagRule::new(FlagPattern::Exactly("/analyze", 0), ArgumentKind::Other(PassEffect::Configures(CompilerPass::Compiling))),
    FlagRule::new(FlagPattern::Exactly("/bigobj", 0), ArgumentKind::Other(PassEffect::Configures(CompilerPass::Compiling))),
    FlagRule::new(FlagPattern::Prefix("/openmp", 0), ArgumentKind::Other(PassEffect::Configures(CompilerPass::Compiling))),
    FlagRule::new(FlagPattern::Exactly("/nologo", 0), ArgumentKind::Other(PassEffect::DriverOption)),
    FlagRule::new(FlagPattern::ExactlyWithColon("/favor"), ArgumentKind::Other(PassEffect::Configures(CompilerPass::Compiling))),
    FlagRule::new(FlagPattern::ExactlyWithColon("/guard"), ArgumentKind::Other(PassEffect::Configures(CompilerPass::Compiling))),
    FlagRule::new(FlagPattern::Exactly("/utf-8", 0), ArgumentKind::Other(PassEffect::Configures(CompilerPass::Compiling))),
    FlagRule::new(FlagPattern::Exactly("/await", 0), ArgumentKind::Other(PassEffect::Configures(CompilerPass::Compiling))),
    FlagRule::new(FlagPattern::Exactly("/help", 0), ArgumentKind::Other(PassEffect::InfoAndExit)),
    FlagRule::new(FlagPattern::ExactlyWithColon("/arch"), ArgumentKind::Other(PassEffect::Configures(CompilerPass::Compiling))),
    FlagRule::new(FlagPattern::Exactly("/Qpar", 0), ArgumentKind::Other(PassEffect::Configures(CompilerPass::Compiling))),
    FlagRule::new(FlagPattern::Exactly("/Wall", 0), ArgumentKind::Other(PassEffect::None)),
    FlagRule::new(FlagPattern::Exactly("/link", 0), ArgumentKind::Other(PassEffect::PassThrough)),
    FlagRule::new(FlagPattern::ExactlyWithColonOrSep("/doc"), ArgumentKind::Other(PassEffect::Configures(CompilerPass::Compiling))),
    FlagRule::new(FlagPattern::ExactlyWithColon("/std"), ArgumentKind::Other(PassEffect::Configures(CompilerPass::Compiling))),
    FlagRule::new(FlagPattern::Exactly("/GR-", 0), ArgumentKind::Other(PassEffect::Configures(CompilerPass::Compiling))),
    FlagRule::new(FlagPattern::Exactly("/MDd", 0), ArgumentKind::Other(PassEffect::Configures(CompilerPass::Compiling))),
    FlagRule::new(FlagPattern::Exactly("/MTd", 0), ArgumentKind::Other(PassEffect::Configures(CompilerPass::Compiling))),
    FlagRule::new(FlagPattern::Prefix("/clr", 0), ArgumentKind::Other(PassEffect::Configures(CompilerPass::Compiling))),
    FlagRule::new(FlagPattern::Prefix("/RTC", 0), ArgumentKind::Other(PassEffect::Configures(CompilerPass::Compiling))),
    FlagRule::new(FlagPattern::Exactly("/sdl", 0), ArgumentKind::Other(PassEffect::Configures(CompilerPass::Compiling))),
    FlagRule::new(FlagPattern::Exactly("/Zo-", 0), ArgumentKind::Other(PassEffect::Configures(CompilerPass::Compiling))),
    FlagRule::new(FlagPattern::Exactly("/WX-", 0), ArgumentKind::Other(PassEffect::None)),
    FlagRule::new(FlagPattern::Exactly("/LDd", 0), ArgumentKind::Other(PassEffect::Configures(CompilerPass::Linking))),
    FlagRule::new(FlagPattern::Exactly("/EP", 0), ArgumentKind::Other(PassEffect::StopsAt(CompilerPass::Preprocessing))),
    FlagRule::new(FlagPattern::ExactlyWithColonOrSep("/Fo"), ArgumentKind::Output),
    FlagRule::new(FlagPattern::ExactlyWithColonOrSep("/Fe"), ArgumentKind::Output),
    FlagRule::new(FlagPattern::ExactlyWithColonOrSep("/Fd"), ArgumentKind::Other(PassEffect::Configures(CompilerPass::Compiling))),
    FlagRule::new(FlagPattern::ExactlyWithColonOrSep("/Fa"), ArgumentKind::Other(PassEffect::Configures(CompilerPass::Compiling))),
    FlagRule::new(FlagPattern::ExactlyWithColonOrSep("/Fi"), ArgumentKind::Other(PassEffect::Configures(CompilerPass::Preprocessing))),
    FlagRule::new(FlagPattern::ExactlyWithColonOrSep("/Fm"), ArgumentKind::Other(PassEffect::Configures(CompilerPass::Linking))),
    FlagRule::new(FlagPattern::ExactlyWithColonOrSep("/FR"), ArgumentKind::Other(PassEffect::Configures(CompilerPass::Compiling))),
    FlagRule::new(FlagPattern::ExactlyWithGluedOrSep("/FI"), ArgumentKind::Other(PassEffect::Configures(CompilerPass::Preprocessing))),
    FlagRule::new(FlagPattern::ExactlyWithGluedOrSep("/Tc"), ArgumentKind::Other(PassEffect::Configures(CompilerPass::Compiling))),
    FlagRule::new(FlagPattern::ExactlyWithGluedOrSep("/Tp"), ArgumentKind::Other(PassEffect::Configures(CompilerPass::Compiling))),
    FlagRule::new(FlagPattern::Exactly("/TC", 0), ArgumentKind::Other(PassEffect::Configures(CompilerPass::Compiling))),
    FlagRule::new(FlagPattern::Exactly("/TP", 0), ArgumentKind::Other(PassEffect::Configures(CompilerPass::Compiling))),
    FlagRule::new(FlagPattern::ExactlyWithColon("/Zc"), ArgumentKind::Other(PassEffect::Configures(CompilerPass::Compiling))),
    FlagRule::new(FlagPattern::Exactly("/O1", 0), ArgumentKind::Other(PassEffect::Configures(CompilerPass::Compiling))),
    FlagRule::new(FlagPattern::Exactly("/O2", 0), ArgumentKind::Other(PassEffect::Configures(CompilerPass::Compiling))),
    FlagRule::new(FlagPattern::Prefix("/Ob", 0), ArgumentKind::Other(PassEffect::Configures(CompilerPass::Compiling))),
    FlagRule::new(FlagPattern::Exactly("/Od", 0), ArgumentKind::Other(PassEffect::Configures(CompilerPass::Compiling))),
    FlagRule::new(FlagPattern::Exactly("/Og", 0), ArgumentKind::Other(PassEffect::Configures(CompilerPass::Compiling))),
    FlagRule::new(FlagPattern::Exactly("/Oi", 0), ArgumentKind::Other(PassEffect::Configures(CompilerPass::Compiling))),
    FlagRule::new(FlagPattern::Exactly("/Os", 0), ArgumentKind::Other(PassEffect::Configures(CompilerPass::Compiling))),
    FlagRule::new(FlagPattern::Exactly("/Ot", 0), ArgumentKind::Other(PassEffect::Configures(CompilerPass::Compiling))),
    FlagRule::new(FlagPattern::Exactly("/Ox", 0), ArgumentKind::Other(PassEffect::Configures(CompilerPass::Compiling))),
    FlagRule::new(FlagPattern::Exactly("/Oy", 0), ArgumentKind::Other(PassEffect::Configures(CompilerPass::Compiling))),
    FlagRule::new(FlagPattern::Exactly("/GL", 0), ArgumentKind::Other(PassEffect::Configures(CompilerPass::Compiling))),
    FlagRule::new(FlagPattern::Exactly("/Gw", 0), ArgumentKind::Other(PassEffect::Configures(CompilerPass::Compiling))),
    FlagRule::new(FlagPattern::Exactly("/Gy", 0), ArgumentKind::Other(PassEffect::Configures(CompilerPass::Compiling))),
    FlagRule::new(FlagPattern::Prefix("/EH", 0), ArgumentKind::Other(PassEffect::Configures(CompilerPass::Compiling))),
    FlagRule::new(FlagPattern::ExactlyWithColon("/fp"), ArgumentKind::Other(PassEffect::Configures(CompilerPass::Compiling))),
    FlagRule::new(FlagPattern::Exactly("/GA", 0), ArgumentKind::Other(PassEffect::Configures(CompilerPass::Compiling))),
    FlagRule::new(FlagPattern::Exactly("/Gd", 0), ArgumentKind::Other(PassEffect::Configures(CompilerPass::Compiling))),
    FlagRule::new(FlagPattern::Exactly("/Ge", 0), ArgumentKind::Other(PassEffect::Configures(CompilerPass::Compiling))),
    FlagRule::new(FlagPattern::Exactly("/GF", 0), ArgumentKind::Other(PassEffect::Configures(CompilerPass::Compiling))),
    FlagRule::new(FlagPattern::Exactly("/Gh", 0), ArgumentKind::Other(PassEffect::Configures(CompilerPass::Compiling))),
    FlagRule::new(FlagPattern::Exactly("/GH", 0), ArgumentKind::Other(PassEffect::Configures(CompilerPass::Compiling))),
    FlagRule::new(FlagPattern::Exactly("/Gr", 0), ArgumentKind::Other(PassEffect::Configures(CompilerPass::Compiling))),
    FlagRule::new(FlagPattern::Exactly("/GR", 0), ArgumentKind::Other(PassEffect::Configures(CompilerPass::Compiling))),
    FlagRule::new(FlagPattern::Prefix("/Gs", 0), ArgumentKind::Other(PassEffect::Configures(CompilerPass::Compiling))),
    FlagRule::new(FlagPattern::Exactly("/GT", 0), ArgumentKind::Other(PassEffect::Configures(CompilerPass::Compiling))),
    FlagRule::new(FlagPattern::Exactly("/Gv", 0), ArgumentKind::Other(PassEffect::Configures(CompilerPass::Compiling))),
    FlagRule::new(FlagPattern::Exactly("/Gz", 0), ArgumentKind::Other(PassEffect::Configures(CompilerPass::Compiling))),
    FlagRule::new(FlagPattern::Exactly("/GZ", 0), ArgumentKind::Other(PassEffect::Configures(CompilerPass::Compiling))),
    FlagRule::new(FlagPattern::Exactly("/MD", 0), ArgumentKind::Other(PassEffect::Configures(CompilerPass::Compiling))),
    FlagRule::new(FlagPattern::Exactly("/MT", 0), ArgumentKind::Other(PassEffect::Configures(CompilerPass::Compiling))),
    FlagRule::new(FlagPattern::Exactly("/ZI", 0), ArgumentKind::Other(PassEffect::Configures(CompilerPass::Compiling))),
    FlagRule::new(FlagPattern::Exactly("/Zi", 0), ArgumentKind::Other(PassEffect::Configures(CompilerPass::Compiling))),
    FlagRule::new(FlagPattern::Exactly("/Z7", 0), ArgumentKind::Other(PassEffect::Configures(CompilerPass::Compiling))),
    FlagRule::new(FlagPattern::Exactly("/Zf", 0), ArgumentKind::Other(PassEffect::Configures(CompilerPass::Compiling))),
    FlagRule::new(FlagPattern::ExactlyWithColon("/ZH"), ArgumentKind::Other(PassEffect::Configures(CompilerPass::Compiling))),
    FlagRule::new(FlagPattern::Exactly("/Zo", 0), ArgumentKind::Other(PassEffect::Configures(CompilerPass::Compiling))),
    FlagRule::new(FlagPattern::Exactly("/WX", 0), ArgumentKind::Other(PassEffect::None)),
    FlagRule::new(FlagPattern::Exactly("/W0", 0), ArgumentKind::Other(PassEffect::None)),
    FlagRule::new(FlagPattern::Exactly("/W1", 0), ArgumentKind::Other(PassEffect::None)),
    FlagRule::new(FlagPattern::Exactly("/W2", 0), ArgumentKind::Other(PassEffect::None)),
    FlagRule::new(FlagPattern::Exactly("/W3", 0), ArgumentKind::Other(PassEffect::None)),
    FlagRule::new(FlagPattern::Exactly("/W4", 0), ArgumentKind::Other(PassEffect::None)),
    FlagRule::new(FlagPattern::ExactlyWithColon("/Wv"), ArgumentKind::Other(PassEffect::None)),
    FlagRule::new(FlagPattern::Exactly("/Wv", 0), ArgumentKind::Other(PassEffect::None)),
    FlagRule::new(FlagPattern::ExactlyWithGluedOrSep("/w1"), ArgumentKind::Other(PassEffect::None)),
    FlagRule::new(FlagPattern::ExactlyWithGluedOrSep("/w2"), ArgumentKind::Other(PassEffect::None)),
    FlagRule::new(FlagPattern::ExactlyWithGluedOrSep("/w3"), ArgumentKind::Other(PassEffect::None)),
    FlagRule::new(FlagPattern::ExactlyWithGluedOrSep("/w4"), ArgumentKind::Other(PassEffect::None)),
    FlagRule::new(FlagPattern::ExactlyWithGluedOrSep("/wd"), ArgumentKind::Other(PassEffect::None)),
    FlagRule::new(FlagPattern::ExactlyWithGluedOrSep("/we"), ArgumentKind::Other(PassEffect::None)),
    FlagRule::new(FlagPattern::ExactlyWithGluedOrSep("/wo"), ArgumentKind::Other(PassEffect::None)),
    FlagRule::new(FlagPattern::Exactly("/FC", 0), ArgumentKind::Other(PassEffect::None)),
    FlagRule::new(FlagPattern::ExactlyWithColonOrSep("/Yc"), ArgumentKind::Other(PassEffect::Configures(CompilerPass::Compiling))),
    FlagRule::new(FlagPattern::ExactlyWithColonOrSep("/Yu"), ArgumentKind::Other(PassEffect::Configures(CompilerPass::Compiling))),
    FlagRule::new(FlagPattern::ExactlyWithColonOrSep("/Fp"), ArgumentKind::Other(PassEffect::Configures(CompilerPass::Compiling))),
    FlagRule::new(FlagPattern::Exactly("/YX", 0), ArgumentKind::Other(PassEffect::Configures(CompilerPass::Compiling))),
    FlagRule::new(FlagPattern::Exactly("/Y-", 0), ArgumentKind::Other(PassEffect::Configures(CompilerPass::Compiling))),
    FlagRule::new(FlagPattern::Exactly("/LD", 0), ArgumentKind::Other(PassEffect::Configures(CompilerPass::Linking))),
    FlagRule::new(FlagPattern::Exactly("/LN", 0), ArgumentKind::Other(PassEffect::Configures(CompilerPass::Linking))),
    FlagRule::new(FlagPattern::ExactlyWithGluedOrSep("/AI"), ArgumentKind::Other(PassEffect::Configures(CompilerPass::Compiling))),
    FlagRule::new(FlagPattern::ExactlyWithGluedOrSep("/FU"), ArgumentKind::Other(PassEffect::Configures(CompilerPass::Compiling))),
    FlagRule::new(FlagPattern::Prefix("/MP", 0), ArgumentKind::Other(PassEffect::DriverOption)),
    FlagRule::new(FlagPattern::Exactly("/FS", 0), ArgumentKind::Other(PassEffect::DriverOption)),
    FlagRule::new(FlagPattern::Exactly("/?", 0), ArgumentKind::Other(PassEffect::InfoAndExit)),
    FlagRule::new(FlagPattern::Exactly("/c", 0), ArgumentKind::Other(PassEffect::StopsAt(CompilerPass::Compiling))),
    FlagRule::new(FlagPattern::Exactly("/E", 0), ArgumentKind::Other(PassEffect::StopsAt(CompilerPass::Preprocessing))),
    FlagRule::new(FlagPattern::Exactly("/P", 0), ArgumentKind::Other(PassEffect::StopsAt(CompilerPass::Preprocessing))),
    FlagRule::new(FlagPattern::ExactlyWithGluedOrSep("/I"), ArgumentKind::Other(PassEffect::Configures(CompilerPass::Preprocessing))),
    FlagRule::new(FlagPattern::ExactlyWithGluedOrSep("/D"), ArgumentKind::Other(PassEffect::Configures(CompilerPass::Preprocessing))),
    FlagRule::new(FlagPattern::ExactlyWithGluedOrSep("/U"), ArgumentKind::Other(PassEffect::Configures(CompilerPass::Preprocessing))),
    FlagRule::new(FlagPattern::Exactly("/u", 0), ArgumentKind::Other(PassEffect::Configures(CompilerPass::Preprocessing))),
    FlagRule::new(FlagPattern::Exactly("/X", 0), ArgumentKind::Other(PassEffect::Configures(CompilerPass::Preprocessing))),
    FlagRule::new(FlagPattern::Exactly("/w", 0), ArgumentKind::Other(PassEffect::None)),
    FlagRule::new(FlagPattern::ExactlyWithGluedOrSep("/F"), ArgumentKind::Other(PassEffect::Configures(CompilerPass::Linking))),
    FlagRule::new(FlagPattern::Exactly("/J", 0), ArgumentKind::Other(PassEffect::Configures(CompilerPass::Compiling))),
];
static MSVC_IGNORE_EXECUTABLES: [&str; 3] = ["c1", "c1xx", "c2", ];
static MSVC_IGNORE_FLAGS: [&str; 0] = [];
static MSVC_SLASH_PREFIX: bool = true;
static MSVC_ENV_RULES: [EnvRule; 4] = [
    EnvRule::new("CL", EnvMapping::Expand { position: EnvPosition::Prepend }, ArgumentKind::Other(PassEffect::Configures(CompilerPass::Compiling))),
    EnvRule::new("_CL_", EnvMapping::Expand { position: EnvPosition::Append }, ArgumentKind::Other(PassEffect::Configures(CompilerPass::Compiling))),
    EnvRule::new("INCLUDE", EnvMapping::Flag { flag: "/I", separator: EnvSeparator::Fixed(";") }, ArgumentKind::Other(PassEffect::Configures(CompilerPass::Preprocessing))),
    EnvRule::new("LIB", EnvMapping::Flag { flag: "/LIBPATH:", separator: EnvSeparator::Fixed(";") }, ArgumentKind::Other(PassEffect::Configures(CompilerPass::Linking))),
];
