Skip to content

Commit e74e39a

Browse files
committed
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.
1 parent 9981e56 commit e74e39a

File tree

3 files changed

+19
-3
lines changed

3 files changed

+19
-3
lines changed

Diff for: compiler/rustc_session/src/config.rs

+7
Original file line numberDiff line numberDiff line change
@@ -833,6 +833,13 @@ impl Passes {
833833
Passes::All => false,
834834
}
835835
}
836+
837+
pub fn extend(&mut self, passes: impl IntoIterator<Item = String>) {
838+
match *self {
839+
Passes::Some(ref mut v) => v.extend(passes),
840+
Passes::All => {}
841+
}
842+
}
836843
}
837844

838845
pub const fn default_lib_output() -> CrateType {

Diff for: compiler/rustc_session/src/options.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -567,7 +567,7 @@ mod parse {
567567
v => {
568568
let mut passes = vec![];
569569
if parse_list(&mut passes, v) {
570-
*slot = Passes::Some(passes);
570+
slot.extend(passes);
571571
true
572572
} else {
573573
false

Diff for: src/test/ui/optimization-remark.rs

+11-2
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,19 @@
11
// build-pass
22
// ignore-pass
33
// no-system-llvm
4-
// revisions: all inline
5-
// compile-flags: --crate-type=lib -Cdebuginfo=1 -Copt-level=2
4+
// revisions: all inline merge1 merge2
5+
// compile-flags: --crate-type=lib -Cdebuginfo=1 -Copt-level=2
6+
//
7+
// Check that remarks can be enabled individually or with "all":
8+
//
69
// [all] compile-flags: -Cremark=all
710
// [inline] compile-flags: -Cremark=inline
11+
//
12+
// Check that values of -Cremark flag are accumulated:
13+
//
14+
// [merge1] compile-flags: -Cremark=all -Cremark=giraffe
15+
// [merge2] compile-flags: -Cremark=inline -Cremark=giraffe
16+
//
817
// error-pattern: inline: f not inlined into g
918
// dont-check-compiler-stderr
1019

0 commit comments

Comments
 (0)