in src/compiler/nvcc.rs [1968:2041]
fn test_parse_cant_cache_flags() {
assert_eq!(
CompilerArguments::CannotCache("-E", None),
parse_arguments_gcc(stringvec!["-x", "cu", "-c", "foo.c", "-o", "foo.o", "-E"])
);
assert_eq!(
CompilerArguments::CannotCache("-E", None),
parse_arguments_msvc(stringvec!["-x", "cu", "-c", "foo.c", "-o", "foo.o", "-E"])
);
assert_eq!(
CompilerArguments::CannotCache("-E", None),
parse_arguments_nvc(stringvec!["-x", "cu", "-c", "foo.c", "-o", "foo.o", "-E"])
);
assert_eq!(
CompilerArguments::CannotCache("-M", None),
parse_arguments_gcc(stringvec!["-x", "cu", "-c", "foo.c", "-o", "foo.o", "-M"])
);
assert_eq!(
CompilerArguments::CannotCache("-M", None),
parse_arguments_msvc(stringvec!["-x", "cu", "-c", "foo.c", "-o", "foo.o", "-M"])
);
assert_eq!(
CompilerArguments::CannotCache("-M", None),
parse_arguments_nvc(stringvec!["-x", "cu", "-c", "foo.c", "-o", "foo.o", "-M"])
);
// nvcc arg parsing is very permissive, so all these are valid and should yield CannotCache
for arg in [
"-fdevice-time-trace",
"--fdevice-time-trace",
"-time",
"--time",
] {
// {-,--}fdevice-time-trace
assert_eq!(
CompilerArguments::CannotCache(arg, None),
parse_arguments_gcc(stringvec![arg])
);
// {-,--}fdevice-time-trace -
assert_eq!(
CompilerArguments::CannotCache(arg, None),
parse_arguments_msvc(stringvec![arg, "-"])
);
// {-,--}fdevice-time-trace-
assert_eq!(
CompilerArguments::CannotCache(arg, None),
parse_arguments_msvc(stringvec![format!("{arg}-")])
);
// {-,--}fdevice-time-trace flamegraph.json
assert_eq!(
CompilerArguments::CannotCache(arg, None),
parse_arguments_nvc(stringvec![arg, "flamegraph.json"])
);
}
for arg_with_separator in [
"-fdevice-time-trace=",
"--fdevice-time-trace=",
"-time=",
"--time=",
] {
// {-,--}fdevice-time-trace=-
assert_eq!(
CompilerArguments::CannotCache(arg_with_separator, None),
parse_arguments_msvc(stringvec![format!("{arg_with_separator}-")])
);
// {-,--}fdevice-time-trace=flamegraph.json
assert_eq!(
CompilerArguments::CannotCache(arg_with_separator, None),
parse_arguments_nvc(stringvec![format!("{arg_with_separator}flamegraph.json")])
);
}
}