Skip to content

Commit 5373c83

Browse files
AJIOBsylvestre
authored andcommitted
Improve save-temps gcc flags detection
1 parent f32dc80 commit 5373c83

File tree

1 file changed

+29
-0
lines changed

1 file changed

+29
-0
lines changed

src/compiler/gcc.rs

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -178,6 +178,8 @@ counted_array!(pub static ARGS: [ArgInfo<ArgData>; _] = [
178178
flag!("--coverage", Coverage),
179179
take_arg!("--param", OsString, Separated, PassThrough),
180180
flag!("--save-temps", TooHardFlag),
181+
flag!("--save-temps=cwd", TooHardFlag),
182+
flag!("--save-temps=obj", TooHardFlag),
181183
take_arg!("--serialize-diagnostics", PathBuf, Separated, SerializeDiagnostics),
182184
take_arg!("--sysroot", PathBuf, Separated, PassThroughPath),
183185
take_arg!("-A", OsString, Separated, PassThrough),
@@ -244,6 +246,8 @@ counted_array!(pub static ARGS: [ArgInfo<ArgData>; _] = [
244246
flag!("-pedantic-errors", PedanticFlag),
245247
flag!("-remap", PreprocessorArgumentFlag),
246248
flag!("-save-temps", TooHardFlag),
249+
flag!("-save-temps=cwd", TooHardFlag),
250+
flag!("-save-temps=obj", TooHardFlag),
247251
take_arg!("-std", OsString, Concatenated(b'='), Standard),
248252
take_arg!("-stdlib", OsString, Concatenated(b'='), PreprocessorArgument),
249253
flag!("-trigraphs", PreprocessorArgumentFlag),
@@ -1536,6 +1540,31 @@ mod test {
15361540
);
15371541
}
15381542

1543+
#[test]
1544+
fn test_parse_arguments_too_hard() {
1545+
let too_hard_flags = stringvec![
1546+
"-save-temps",
1547+
"-save-temps=cwd",
1548+
"-save-temps=obj",
1549+
"--save-temps",
1550+
"--save-temps=cwd",
1551+
"--save-temps=obj"
1552+
];
1553+
1554+
for flag in too_hard_flags {
1555+
let args = stringvec!["-c", "foo.c", "-o", "foo.o", flag];
1556+
1557+
match parse_arguments_(args, false) {
1558+
CompilerArguments::CannotCache(reason, None) => {
1559+
assert_eq!(reason, &flag);
1560+
}
1561+
o => {
1562+
panic!("Got unexpected parse result: {:?} for flag: {:?}", o, flag);
1563+
}
1564+
}
1565+
}
1566+
}
1567+
15391568
#[test]
15401569
fn test_parse_arguments_explicit_dep_target() {
15411570
let args = stringvec![

0 commit comments

Comments
 (0)