Accumulate all values of -C remark option

When `-C remark=...` option is specified multiple times,
accumulate all values instead of using only the last one.
This commit is contained in:
Tomasz Miąsko 2021-11-13 00:00:00 +00:00
parent 9981e56d3b
commit e74e39a699
3 changed files with 19 additions and 3 deletions

View File

@ -833,6 +833,13 @@ impl Passes {
Passes::All => false,
}
}
pub fn extend(&mut self, passes: impl IntoIterator<Item = String>) {
match *self {
Passes::Some(ref mut v) => v.extend(passes),
Passes::All => {}
}
}
}
pub const fn default_lib_output() -> CrateType {

View File

@ -567,7 +567,7 @@ mod parse {
v => {
let mut passes = vec![];
if parse_list(&mut passes, v) {
*slot = Passes::Some(passes);
slot.extend(passes);
true
} else {
false

View File

@ -1,10 +1,19 @@
// build-pass
// ignore-pass
// no-system-llvm
// revisions: all inline
// compile-flags: --crate-type=lib -Cdebuginfo=1 -Copt-level=2
// revisions: all inline merge1 merge2
// compile-flags: --crate-type=lib -Cdebuginfo=1 -Copt-level=2
//
// Check that remarks can be enabled individually or with "all":
//
// [all] compile-flags: -Cremark=all
// [inline] compile-flags: -Cremark=inline
//
// Check that values of -Cremark flag are accumulated:
//
// [merge1] compile-flags: -Cremark=all -Cremark=giraffe
// [merge2] compile-flags: -Cremark=inline -Cremark=giraffe
//
// error-pattern: inline: f not inlined into g
// dont-check-compiler-stderr