authorbors <bors@rust-lang.org> 2025-02-09 12:54:26 UTC
committerbors <bors@rust-lang.org> 2025-02-09 12:54:26 UTC
loga26e97be8826d408309fffbd8168362365719f50
tree6338d193659cbf549cbd09e6f0ced8a9feb1a5c3
parent1ff21350fdc967393243227c88dddb5def8717b2
parent5ec56e5fbbbef22be73a469ec5467714391f8a67

Auto merge of #136754 - Urgau:rollup-qlkhjqr, r=Urgau

Rollup of 5 pull requests Successful merges: - #134679 (Windows: remove readonly files) - #136213 (Allow Rust to use a number of libc filesystem calls) - #136530 (Implement `x perf` directly in bootstrap) - #136601 (Detect (non-raw) borrows of null ZST pointers in CheckNull) - #136659 (Pick the max DWARF version when LTO'ing modules with different versions ) r? `@ghost` `@rustbot` modify labels: rollup

45 files changed, 3828 insertions(+), 386 deletions(-)

Cargo.lock-7
......@@ -3287,13 +3287,6 @@ dependencies = [
32873287 "tikv-jemalloc-sys",
32883288]
32893289
3290[[package]]
3291name = "rustc-perf-wrapper"
3292version = "0.1.0"
3293dependencies = [
3294 "clap",
3295]
3296
32973290[[package]]
32983291name = "rustc-rayon"
32993292version = "0.5.1"
Cargo.toml-1
......@@ -45,7 +45,6 @@ members = [
4545 "src/tools/rustdoc-gui-test",
4646 "src/tools/opt-dist",
4747 "src/tools/coverage-dump",
48 "src/tools/rustc-perf-wrapper",
4948 "src/tools/wasm-component-ld",
5049 "src/tools/features-status-dump",
5150]
compiler/rustc_codegen_llvm/src/debuginfo/mod.rs+5-1
......@@ -97,7 +97,11 @@ impl<'ll, 'tcx> CodegenUnitDebugContext<'ll, 'tcx> {
9797 // Android has the same issue (#22398)
9898 llvm::add_module_flag_u32(
9999 self.llmod,
100 llvm::ModuleFlagMergeBehavior::Warning,
100 // In the case where multiple CGUs with different dwarf version
101 // values are being merged together, such as with cross-crate
102 // LTO, then we want to use the highest version of dwarf
103 // we can. This matches Clang's behavior as well.
104 llvm::ModuleFlagMergeBehavior::Max,
101105 "Dwarf Version",
102106 sess.dwarf_version(),
103107 );
compiler/rustc_middle/src/mir/terminator.rs+1-1
......@@ -272,7 +272,7 @@ impl<O> AssertKind<O> {
272272 "\"misaligned pointer dereference: address must be a multiple of {{}} but is {{}}\", {required:?}, {found:?}"
273273 )
274274 }
275 NullPointerDereference => write!(f, "\"null pointer dereference occured\""),
275 NullPointerDereference => write!(f, "\"null pointer dereference occurred\""),
276276 ResumedAfterReturn(CoroutineKind::Coroutine(_)) => {
277277 write!(f, "\"coroutine resumed after completion\"")
278278 }
compiler/rustc_mir_transform/src/check_alignment.rs+2
......@@ -1,5 +1,6 @@
11use rustc_index::IndexVec;
22use rustc_middle::mir::interpret::Scalar;
3use rustc_middle::mir::visit::PlaceContext;
34use rustc_middle::mir::*;
45use rustc_middle::ty::{Ty, TyCtxt};
56use rustc_session::Session;
......@@ -44,6 +45,7 @@ fn insert_alignment_check<'tcx>(
4445 tcx: TyCtxt<'tcx>,
4546 pointer: Place<'tcx>,
4647 pointee_ty: Ty<'tcx>,
48 _context: PlaceContext,
4749 local_decls: &mut IndexVec<Local, LocalDecl<'tcx>>,
4850 stmts: &mut Vec<Statement<'tcx>>,
4951 source_info: SourceInfo,
compiler/rustc_mir_transform/src/check_null.rs+46-23
......@@ -1,5 +1,5 @@
11use rustc_index::IndexVec;
2use rustc_middle::mir::interpret::Scalar;
2use rustc_middle::mir::visit::{MutatingUseContext, NonMutatingUseContext, PlaceContext};
33use rustc_middle::mir::*;
44use rustc_middle::ty::{Ty, TyCtxt};
55use rustc_session::Session;
......@@ -26,6 +26,7 @@ fn insert_null_check<'tcx>(
2626 tcx: TyCtxt<'tcx>,
2727 pointer: Place<'tcx>,
2828 pointee_ty: Ty<'tcx>,
29 context: PlaceContext,
2930 local_decls: &mut IndexVec<Local, LocalDecl<'tcx>>,
3031 stmts: &mut Vec<Statement<'tcx>>,
3132 source_info: SourceInfo,
......@@ -42,30 +43,51 @@ fn insert_null_check<'tcx>(
4243 let addr = local_decls.push(LocalDecl::with_source_info(tcx.types.usize, source_info)).into();
4344 stmts.push(Statement { source_info, kind: StatementKind::Assign(Box::new((addr, rvalue))) });
4445
45 // Get size of the pointee (zero-sized reads and writes are allowed).
46 let rvalue = Rvalue::NullaryOp(NullOp::SizeOf, pointee_ty);
47 let sizeof_pointee =
48 local_decls.push(LocalDecl::with_source_info(tcx.types.usize, source_info)).into();
49 stmts.push(Statement {
50 source_info,
51 kind: StatementKind::Assign(Box::new((sizeof_pointee, rvalue))),
52 });
53
54 // Check that the pointee is not a ZST.
5546 let zero = Operand::Constant(Box::new(ConstOperand {
5647 span: source_info.span,
5748 user_ty: None,
58 const_: Const::Val(ConstValue::Scalar(Scalar::from_target_usize(0, &tcx)), tcx.types.usize),
49 const_: Const::Val(ConstValue::from_target_usize(0, &tcx), tcx.types.usize),
5950 }));
60 let is_pointee_no_zst =
61 local_decls.push(LocalDecl::with_source_info(tcx.types.bool, source_info)).into();
62 stmts.push(Statement {
63 source_info,
64 kind: StatementKind::Assign(Box::new((
65 is_pointee_no_zst,
66 Rvalue::BinaryOp(BinOp::Ne, Box::new((Operand::Copy(sizeof_pointee), zero.clone()))),
67 ))),
68 });
51
52 let pointee_should_be_checked = match context {
53 // Borrows pointing to "null" are UB even if the pointee is a ZST.
54 PlaceContext::NonMutatingUse(NonMutatingUseContext::SharedBorrow)
55 | PlaceContext::MutatingUse(MutatingUseContext::Borrow) => {
56 // Pointer should be checked unconditionally.
57 Operand::Constant(Box::new(ConstOperand {
58 span: source_info.span,
59 user_ty: None,
60 const_: Const::Val(ConstValue::from_bool(true), tcx.types.bool),
61 }))
62 }
63 // Other usages of null pointers only are UB if the pointee is not a ZST.
64 _ => {
65 let rvalue = Rvalue::NullaryOp(NullOp::SizeOf, pointee_ty);
66 let sizeof_pointee =
67 local_decls.push(LocalDecl::with_source_info(tcx.types.usize, source_info)).into();
68 stmts.push(Statement {
69 source_info,
70 kind: StatementKind::Assign(Box::new((sizeof_pointee, rvalue))),
71 });
72
73 // Check that the pointee is not a ZST.
74 let is_pointee_not_zst =
75 local_decls.push(LocalDecl::with_source_info(tcx.types.bool, source_info)).into();
76 stmts.push(Statement {
77 source_info,
78 kind: StatementKind::Assign(Box::new((
79 is_pointee_not_zst,
80 Rvalue::BinaryOp(
81 BinOp::Ne,
82 Box::new((Operand::Copy(sizeof_pointee), zero.clone())),
83 ),
84 ))),
85 });
86
87 // Pointer needs to be checked only if pointee is not a ZST.
88 Operand::Copy(is_pointee_not_zst)
89 }
90 };
6991
7092 // Check whether the pointer is null.
7193 let is_null = local_decls.push(LocalDecl::with_source_info(tcx.types.bool, source_info)).into();
......@@ -77,7 +99,8 @@ fn insert_null_check<'tcx>(
7799 ))),
78100 });
79101
80 // We want to throw an exception if the pointer is null and doesn't point to a ZST.
102 // We want to throw an exception if the pointer is null and the pointee is not unconditionally
103 // allowed (which for all non-borrow place uses, is when the pointee is ZST).
81104 let should_throw_exception =
82105 local_decls.push(LocalDecl::with_source_info(tcx.types.bool, source_info)).into();
83106 stmts.push(Statement {
......@@ -86,7 +109,7 @@ fn insert_null_check<'tcx>(
86109 should_throw_exception,
87110 Rvalue::BinaryOp(
88111 BinOp::BitAnd,
89 Box::new((Operand::Copy(is_null), Operand::Copy(is_pointee_no_zst))),
112 Box::new((Operand::Copy(is_null), pointee_should_be_checked)),
90113 ),
91114 ))),
92115 });
compiler/rustc_mir_transform/src/check_pointers.rs+8-6
......@@ -40,10 +40,10 @@ pub(crate) enum BorrowCheckMode {
4040/// success and fail the check otherwise.
4141/// This utility will insert a terminator block that asserts on the condition
4242/// and panics on failure.
43pub(crate) fn check_pointers<'a, 'tcx, F>(
43pub(crate) fn check_pointers<'tcx, F>(
4444 tcx: TyCtxt<'tcx>,
4545 body: &mut Body<'tcx>,
46 excluded_pointees: &'a [Ty<'tcx>],
46 excluded_pointees: &[Ty<'tcx>],
4747 on_finding: F,
4848 borrow_check_mode: BorrowCheckMode,
4949) where
......@@ -51,6 +51,7 @@ pub(crate) fn check_pointers<'a, 'tcx, F>(
5151 /* tcx: */ TyCtxt<'tcx>,
5252 /* pointer: */ Place<'tcx>,
5353 /* pointee_ty: */ Ty<'tcx>,
54 /* context: */ PlaceContext,
5455 /* local_decls: */ &mut IndexVec<Local, LocalDecl<'tcx>>,
5556 /* stmts: */ &mut Vec<Statement<'tcx>>,
5657 /* source_info: */ SourceInfo,
......@@ -86,7 +87,7 @@ pub(crate) fn check_pointers<'a, 'tcx, F>(
8687 );
8788 finder.visit_statement(statement, location);
8889
89 for (local, ty) in finder.into_found_pointers() {
90 for (local, ty, context) in finder.into_found_pointers() {
9091 debug!("Inserting check for {:?}", ty);
9192 let new_block = split_block(basic_blocks, location);
9293
......@@ -98,6 +99,7 @@ pub(crate) fn check_pointers<'a, 'tcx, F>(
9899 tcx,
99100 local,
100101 ty,
102 context,
101103 local_decls,
102104 &mut block_data.statements,
103105 source_info,
......@@ -125,7 +127,7 @@ struct PointerFinder<'a, 'tcx> {
125127 tcx: TyCtxt<'tcx>,
126128 local_decls: &'a mut LocalDecls<'tcx>,
127129 typing_env: ty::TypingEnv<'tcx>,
128 pointers: Vec<(Place<'tcx>, Ty<'tcx>)>,
130 pointers: Vec<(Place<'tcx>, Ty<'tcx>, PlaceContext)>,
129131 excluded_pointees: &'a [Ty<'tcx>],
130132 borrow_check_mode: BorrowCheckMode,
131133}
......@@ -148,7 +150,7 @@ impl<'a, 'tcx> PointerFinder<'a, 'tcx> {
148150 }
149151 }
150152
151 fn into_found_pointers(self) -> Vec<(Place<'tcx>, Ty<'tcx>)> {
153 fn into_found_pointers(self) -> Vec<(Place<'tcx>, Ty<'tcx>, PlaceContext)> {
152154 self.pointers
153155 }
154156
......@@ -211,7 +213,7 @@ impl<'a, 'tcx> Visitor<'tcx> for PointerFinder<'a, 'tcx> {
211213 return;
212214 }
213215
214 self.pointers.push((pointer, pointee_ty));
216 self.pointers.push((pointer, pointee_ty, context));
215217
216218 self.super_place(place, context, location);
217219 }
compiler/stable_mir/src/mir/body.rs+1-1
......@@ -307,7 +307,7 @@ impl AssertMessage {
307307 AssertMessage::MisalignedPointerDereference { .. } => {
308308 Ok("misaligned pointer dereference")
309309 }
310 AssertMessage::NullPointerDereference => Ok("null pointer dereference occured"),
310 AssertMessage::NullPointerDereference => Ok("null pointer dereference occurred"),
311311 }
312312 }
313313}
compiler/stable_mir/src/mir/pretty.rs+1-1
......@@ -299,7 +299,7 @@ fn pretty_assert_message<W: Write>(writer: &mut W, msg: &AssertMessage) -> io::R
299299 )
300300 }
301301 AssertMessage::NullPointerDereference => {
302 write!(writer, "\"null pointer dereference occured.\"")
302 write!(writer, "\"null pointer dereference occurred\"")
303303 }
304304 AssertMessage::ResumedAfterReturn(_) | AssertMessage::ResumedAfterPanic(_) => {
305305 write!(writer, "{}", msg.description().unwrap())
library/core/src/panicking.rs+1-1
......@@ -302,7 +302,7 @@ fn panic_null_pointer_dereference() -> ! {
302302 }
303303
304304 panic_nounwind_fmt(
305 format_args!("null pointer dereference occured"),
305 format_args!("null pointer dereference occurred"),
306306 /* force_no_backtrace */ false,
307307 )
308308}
library/std/src/fs.rs+2-2
......@@ -2307,8 +2307,8 @@ impl AsInner<fs_imp::DirEntry> for DirEntry {
23072307///
23082308/// # Platform-specific behavior
23092309///
2310/// This function currently corresponds to the `unlink` function on Unix
2311/// and the `DeleteFile` function on Windows.
2310/// This function currently corresponds to the `unlink` function on Unix.
2311/// On Windows, `DeleteFile` is used or `CreateFileW` and `SetInformationByHandle` for readonly files.
23122312/// Note that, this [may change in the future][changes].
23132313///
23142314/// [changes]: io#platform-specific-behavior
library/std/src/fs/tests.rs+1-1
......@@ -1384,7 +1384,7 @@ fn file_try_clone() {
13841384}
13851385
13861386#[test]
1387#[cfg(not(windows))]
1387#[cfg(not(target_vendor = "win7"))]
13881388fn unlink_readonly() {
13891389 let tmpdir = tmpdir();
13901390 let path = tmpdir.join("file");
library/std/src/sys/pal/unix/fs.rs+17-1
......@@ -9,9 +9,12 @@ use libc::c_char;
99#[cfg(any(
1010 all(target_os = "linux", not(target_env = "musl")),
1111 target_os = "android",
12 target_os = "fuchsia",
1213 target_os = "hurd"
1314))]
1415use libc::dirfd;
16#[cfg(target_os = "fuchsia")]
17use libc::fstatat as fstatat64;
1518#[cfg(any(all(target_os = "linux", not(target_env = "musl")), target_os = "hurd"))]
1619use libc::fstatat64;
1720#[cfg(any(
......@@ -848,7 +851,6 @@ impl Drop for Dir {
848851 target_os = "vita",
849852 target_os = "hurd",
850853 target_os = "espidf",
851 target_os = "fuchsia",
852854 target_os = "horizon",
853855 target_os = "vxworks",
854856 target_os = "rtems",
......@@ -880,6 +882,7 @@ impl DirEntry {
880882 any(
881883 all(target_os = "linux", not(target_env = "musl")),
882884 target_os = "android",
885 target_os = "fuchsia",
883886 target_os = "hurd"
884887 ),
885888 not(miri) // no dirfd on Miri
......@@ -908,6 +911,7 @@ impl DirEntry {
908911 not(any(
909912 all(target_os = "linux", not(target_env = "musl")),
910913 target_os = "android",
914 target_os = "fuchsia",
911915 target_os = "hurd",
912916 )),
913917 miri
......@@ -1211,6 +1215,7 @@ impl File {
12111215 }
12121216 #[cfg(any(
12131217 target_os = "freebsd",
1218 target_os = "fuchsia",
12141219 target_os = "linux",
12151220 target_os = "android",
12161221 target_os = "netbsd",
......@@ -1223,6 +1228,7 @@ impl File {
12231228 }
12241229 #[cfg(not(any(
12251230 target_os = "android",
1231 target_os = "fuchsia",
12261232 target_os = "freebsd",
12271233 target_os = "linux",
12281234 target_os = "netbsd",
......@@ -1238,6 +1244,7 @@ impl File {
12381244
12391245 #[cfg(any(
12401246 target_os = "freebsd",
1247 target_os = "fuchsia",
12411248 target_os = "linux",
12421249 target_os = "netbsd",
12431250 target_vendor = "apple",
......@@ -1249,6 +1256,7 @@ impl File {
12491256
12501257 #[cfg(not(any(
12511258 target_os = "freebsd",
1259 target_os = "fuchsia",
12521260 target_os = "linux",
12531261 target_os = "netbsd",
12541262 target_vendor = "apple",
......@@ -1259,6 +1267,7 @@ impl File {
12591267
12601268 #[cfg(any(
12611269 target_os = "freebsd",
1270 target_os = "fuchsia",
12621271 target_os = "linux",
12631272 target_os = "netbsd",
12641273 target_vendor = "apple",
......@@ -1270,6 +1279,7 @@ impl File {
12701279
12711280 #[cfg(not(any(
12721281 target_os = "freebsd",
1282 target_os = "fuchsia",
12731283 target_os = "linux",
12741284 target_os = "netbsd",
12751285 target_vendor = "apple",
......@@ -1280,6 +1290,7 @@ impl File {
12801290
12811291 #[cfg(any(
12821292 target_os = "freebsd",
1293 target_os = "fuchsia",
12831294 target_os = "linux",
12841295 target_os = "netbsd",
12851296 target_vendor = "apple",
......@@ -1297,6 +1308,7 @@ impl File {
12971308
12981309 #[cfg(not(any(
12991310 target_os = "freebsd",
1311 target_os = "fuchsia",
13001312 target_os = "linux",
13011313 target_os = "netbsd",
13021314 target_vendor = "apple",
......@@ -1307,6 +1319,7 @@ impl File {
13071319
13081320 #[cfg(any(
13091321 target_os = "freebsd",
1322 target_os = "fuchsia",
13101323 target_os = "linux",
13111324 target_os = "netbsd",
13121325 target_vendor = "apple",
......@@ -1324,6 +1337,7 @@ impl File {
13241337
13251338 #[cfg(not(any(
13261339 target_os = "freebsd",
1340 target_os = "fuchsia",
13271341 target_os = "linux",
13281342 target_os = "netbsd",
13291343 target_vendor = "apple",
......@@ -1334,6 +1348,7 @@ impl File {
13341348
13351349 #[cfg(any(
13361350 target_os = "freebsd",
1351 target_os = "fuchsia",
13371352 target_os = "linux",
13381353 target_os = "netbsd",
13391354 target_vendor = "apple",
......@@ -1345,6 +1360,7 @@ impl File {
13451360
13461361 #[cfg(not(any(
13471362 target_os = "freebsd",
1363 target_os = "fuchsia",
13481364 target_os = "linux",
13491365 target_os = "netbsd",
13501366 target_vendor = "apple",
library/std/src/sys/pal/windows/fs.rs+24-2
......@@ -296,6 +296,10 @@ impl OpenOptions {
296296impl File {
297297 pub fn open(path: &Path, opts: &OpenOptions) -> io::Result<File> {
298298 let path = maybe_verbatim(path)?;
299 Self::open_native(&path, opts)
300 }
301
302 fn open_native(path: &[u16], opts: &OpenOptions) -> io::Result<File> {
299303 let creation = opts.get_creation_mode()?;
300304 let handle = unsafe {
301305 c::CreateFileW(
......@@ -1226,8 +1230,26 @@ pub fn readdir(p: &Path) -> io::Result<ReadDir> {
12261230
12271231pub fn unlink(p: &Path) -> io::Result<()> {
12281232 let p_u16s = maybe_verbatim(p)?;
1229 cvt(unsafe { c::DeleteFileW(p_u16s.as_ptr()) })?;
1230 Ok(())
1233 if unsafe { c::DeleteFileW(p_u16s.as_ptr()) } == 0 {
1234 let err = api::get_last_error();
1235 // if `DeleteFileW` fails with ERROR_ACCESS_DENIED then try to remove
1236 // the file while ignoring the readonly attribute.
1237 // This is accomplished by calling the `posix_delete` function on an open file handle.
1238 if err == WinError::ACCESS_DENIED {
1239 let mut opts = OpenOptions::new();
1240 opts.access_mode(c::DELETE);
1241 opts.custom_flags(c::FILE_FLAG_OPEN_REPARSE_POINT);
1242 if let Ok(f) = File::open_native(&p_u16s, &opts) {
1243 if f.posix_delete().is_ok() {
1244 return Ok(());
1245 }
1246 }
1247 }
1248 // return the original error if any of the above fails.
1249 Err(io::Error::from_raw_os_error(err.code as i32))
1250 } else {
1251 Ok(())
1252 }
12311253}
12321254
12331255pub fn rename(old: &Path, new: &Path) -> io::Result<()> {
library/std/tests/win_delete_self.rs created+8
......@@ -0,0 +1,8 @@
1#![cfg(windows)]
2
3/// Attempting to delete a running binary should return an error on Windows.
4#[test]
5fn win_delete_self() {
6 let path = std::env::current_exe().unwrap();
7 assert!(std::fs::remove_file(path).is_err());
8}
src/bootstrap/src/core/build_steps/perf.rs+208-12
......@@ -1,35 +1,231 @@
1use std::fmt::{Display, Formatter};
2
13use crate::core::build_steps::compile::{Std, Sysroot};
2use crate::core::build_steps::tool::{RustcPerf, Tool};
4use crate::core::build_steps::tool::{RustcPerf, Rustdoc};
35use crate::core::builder::Builder;
46use crate::core::config::DebuginfoLevel;
7use crate::utils::exec::{BootstrapCommand, command};
8
9#[derive(Debug, Clone, clap::Parser)]
10pub struct PerfArgs {
11 #[clap(subcommand)]
12 cmd: PerfCommand,
13}
14
15#[derive(Debug, Clone, clap::Parser)]
16enum PerfCommand {
17 /// Run `profile_local eprintln`.
18 /// This executes the compiler on the given benchmarks and stores its stderr output.
19 Eprintln {
20 #[clap(flatten)]
21 opts: SharedOpts,
22 },
23 /// Run `profile_local samply`
24 /// This executes the compiler on the given benchmarks and profiles it with `samply`.
25 /// You need to install `samply`, e.g. using `cargo install samply`.
26 Samply {
27 #[clap(flatten)]
28 opts: SharedOpts,
29 },
30 /// Run `profile_local cachegrind`.
31 /// This executes the compiler on the given benchmarks under `Cachegrind`.
32 Cachegrind {
33 #[clap(flatten)]
34 opts: SharedOpts,
35 },
36 /// Run compile benchmarks with a locally built compiler.
37 Benchmark {
38 /// Identifier to associate benchmark results with
39 #[clap(name = "benchmark-id")]
40 id: String,
41
42 #[clap(flatten)]
43 opts: SharedOpts,
44 },
45 /// Compare the results of two previously executed benchmark runs.
46 Compare {
47 /// The name of the base artifact to be compared.
48 base: String,
49
50 /// The name of the modified artifact to be compared.
51 modified: String,
52 },
53}
54
55impl PerfCommand {
56 fn shared_opts(&self) -> Option<&SharedOpts> {
57 match self {
58 PerfCommand::Eprintln { opts, .. }
59 | PerfCommand::Samply { opts, .. }
60 | PerfCommand::Cachegrind { opts, .. }
61 | PerfCommand::Benchmark { opts, .. } => Some(opts),
62 PerfCommand::Compare { .. } => None,
63 }
64 }
65}
66
67#[derive(Debug, Clone, clap::Parser)]
68struct SharedOpts {
69 /// Select the benchmarks that you want to run (separated by commas).
70 /// If unspecified, all benchmarks will be executed.
71 #[clap(long, global = true, value_delimiter = ',')]
72 include: Vec<String>,
73
74 /// Select the benchmarks matching a prefix in this comma-separated list that you don't want to run.
75 #[clap(long, global = true, value_delimiter = ',')]
76 exclude: Vec<String>,
77
78 /// Select the scenarios that should be benchmarked.
79 #[clap(
80 long,
81 global = true,
82 value_delimiter = ',',
83 default_value = "Full,IncrFull,IncrUnchanged,IncrPatched"
84 )]
85 scenarios: Vec<Scenario>,
86 /// Select the profiles that should be benchmarked.
87 #[clap(long, global = true, value_delimiter = ',', default_value = "Check,Debug,Opt")]
88 profiles: Vec<Profile>,
89}
90
91#[derive(Clone, Copy, Debug, PartialEq, clap::ValueEnum)]
92#[value(rename_all = "PascalCase")]
93pub enum Profile {
94 Check,
95 Debug,
96 Doc,
97 Opt,
98 Clippy,
99}
100
101impl Display for Profile {
102 fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
103 let name = match self {
104 Profile::Check => "Check",
105 Profile::Debug => "Debug",
106 Profile::Doc => "Doc",
107 Profile::Opt => "Opt",
108 Profile::Clippy => "Clippy",
109 };
110 f.write_str(name)
111 }
112}
113
114#[derive(Clone, Copy, Debug, clap::ValueEnum)]
115#[value(rename_all = "PascalCase")]
116pub enum Scenario {
117 Full,
118 IncrFull,
119 IncrUnchanged,
120 IncrPatched,
121}
122
123impl Display for Scenario {
124 fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
125 let name = match self {
126 Scenario::Full => "Full",
127 Scenario::IncrFull => "IncrFull",
128 Scenario::IncrUnchanged => "IncrUnchanged",
129 Scenario::IncrPatched => "IncrPatched",
130 };
131 f.write_str(name)
132 }
133}
5134
6135/// Performs profiling using `rustc-perf` on a built version of the compiler.
7pub fn perf(builder: &Builder<'_>) {
136pub fn perf(builder: &Builder<'_>, args: &PerfArgs) {
8137 let collector = builder.ensure(RustcPerf {
9138 compiler: builder.compiler(0, builder.config.build),
10139 target: builder.config.build,
11140 });
12141
13 if builder.build.config.rust_debuginfo_level_rustc == DebuginfoLevel::None {
142 let is_profiling = match &args.cmd {
143 PerfCommand::Eprintln { .. }
144 | PerfCommand::Samply { .. }
145 | PerfCommand::Cachegrind { .. } => true,
146 PerfCommand::Benchmark { .. } | PerfCommand::Compare { .. } => false,
147 };
148 if is_profiling && builder.build.config.rust_debuginfo_level_rustc == DebuginfoLevel::None {
14149 builder.info(r#"WARNING: You are compiling rustc without debuginfo, this will make profiling less useful.
15150Consider setting `rust.debuginfo-level = 1` in `config.toml`."#);
16151 }
17152
18153 let compiler = builder.compiler(builder.top_stage, builder.config.build);
19154 builder.ensure(Std::new(compiler, builder.config.build));
155
156 if let Some(opts) = args.cmd.shared_opts() {
157 if opts.profiles.contains(&Profile::Doc) {
158 builder.ensure(Rustdoc { compiler });
159 }
160 }
161
20162 let sysroot = builder.ensure(Sysroot::new(compiler));
21163 let rustc = sysroot.join("bin/rustc");
22164
23165 let rustc_perf_dir = builder.build.tempdir().join("rustc-perf");
24 let profile_results_dir = rustc_perf_dir.join("results");
166 let results_dir = rustc_perf_dir.join("results");
167 builder.create_dir(&results_dir);
168
169 let mut cmd = command(collector);
170
171 // We need to set the working directory to `src/tools/rustc-perf`, so that it can find the directory
172 // with compile-time benchmarks.
173 cmd.current_dir(builder.src.join("src/tools/rustc-perf"));
174
175 let db_path = results_dir.join("results.db");
176
177 match &args.cmd {
178 PerfCommand::Eprintln { opts }
179 | PerfCommand::Samply { opts }
180 | PerfCommand::Cachegrind { opts } => {
181 cmd.arg("profile_local");
182 cmd.arg(match &args.cmd {
183 PerfCommand::Eprintln { .. } => "eprintln",
184 PerfCommand::Samply { .. } => "samply",
185 PerfCommand::Cachegrind { .. } => "cachegrind",
186 _ => unreachable!(),
187 });
25188
26 // We need to take args passed after `--` and pass them to `rustc-perf-wrapper`
27 let args = std::env::args().skip_while(|a| a != "--").skip(1);
189 cmd.arg("--out-dir").arg(&results_dir);
190 cmd.arg(rustc);
28191
29 let mut cmd = builder.tool_cmd(Tool::RustcPerfWrapper);
30 cmd.env("RUSTC_REAL", rustc)
31 .env("PERF_COLLECTOR", collector)
32 .env("PERF_RESULT_DIR", profile_results_dir)
33 .args(args);
34 cmd.run(builder);
192 apply_shared_opts(&mut cmd, opts);
193 cmd.run(builder);
194
195 println!("You can find the results at `{}`", &results_dir.display());
196 }
197 PerfCommand::Benchmark { id, opts } => {
198 cmd.arg("bench_local");
199 cmd.arg("--db").arg(&db_path);
200 cmd.arg("--id").arg(id);
201 cmd.arg(rustc);
202
203 apply_shared_opts(&mut cmd, opts);
204 cmd.run(builder);
205 }
206 PerfCommand::Compare { base, modified } => {
207 cmd.arg("bench_cmp");
208 cmd.arg("--db").arg(&db_path);
209 cmd.arg(base).arg(modified);
210
211 cmd.run(builder);
212 }
213 }
214}
215
216fn apply_shared_opts(cmd: &mut BootstrapCommand, opts: &SharedOpts) {
217 if !opts.include.is_empty() {
218 cmd.arg("--include").arg(opts.include.join(","));
219 }
220 if !opts.exclude.is_empty() {
221 cmd.arg("--exclude").arg(opts.exclude.join(","));
222 }
223 if !opts.profiles.is_empty() {
224 cmd.arg("--profiles")
225 .arg(opts.profiles.iter().map(|p| p.to_string()).collect::<Vec<_>>().join(","));
226 }
227 if !opts.scenarios.is_empty() {
228 cmd.arg("--scenarios")
229 .arg(opts.scenarios.iter().map(|p| p.to_string()).collect::<Vec<_>>().join(","));
230 }
35231}
src/bootstrap/src/core/build_steps/tool.rs-1
......@@ -362,7 +362,6 @@ bootstrap_tool!(
362362 GenerateWindowsSys, "src/tools/generate-windows-sys", "generate-windows-sys";
363363 RustdocGUITest, "src/tools/rustdoc-gui-test", "rustdoc-gui-test", is_unstable_tool = true, allow_features = "test";
364364 CoverageDump, "src/tools/coverage-dump", "coverage-dump";
365 RustcPerfWrapper, "src/tools/rustc-perf-wrapper", "rustc-perf-wrapper";
366365 WasmComponentLd, "src/tools/wasm-component-ld", "wasm-component-ld", is_unstable_tool = true, allow_features = "min_specialization";
367366 UnicodeTableGenerator, "src/tools/unicode-table-generator", "unicode-table-generator";
368367 FeaturesStatusDump, "src/tools/features-status-dump", "features-status-dump";
src/bootstrap/src/core/config/flags.rs+3-5
......@@ -9,6 +9,7 @@ use clap::{CommandFactory, Parser, ValueEnum};
99#[cfg(feature = "tracing")]
1010use tracing::instrument;
1111
12use crate::core::build_steps::perf::PerfArgs;
1213use crate::core::build_steps::setup::Profile;
1314use crate::core::builder::{Builder, Kind};
1415use crate::core::config::{Config, TargetSelectionList, target_selection_list};
......@@ -481,11 +482,8 @@ Arguments:
481482 #[arg(long)]
482483 versioned_dirs: bool,
483484 },
484 /// Perform profiling and benchmarking of the compiler using the
485 /// `rustc-perf-wrapper` tool.
486 ///
487 /// You need to pass arguments after `--`, e.g.`x perf -- cachegrind`.
488 Perf {},
485 /// Perform profiling and benchmarking of the compiler using `rustc-perf`.
486 Perf(PerfArgs),
489487}
490488
491489impl Subcommand {
src/bootstrap/src/lib.rs+2-2
......@@ -573,8 +573,8 @@ impl Build {
573573 Subcommand::Suggest { run } => {
574574 return core::build_steps::suggest::suggest(&builder::Builder::new(self), *run);
575575 }
576 Subcommand::Perf { .. } => {
577 return core::build_steps::perf::perf(&builder::Builder::new(self));
576 Subcommand::Perf(args) => {
577 return core::build_steps::perf::perf(&builder::Builder::new(self), args);
578578 }
579579 _cmd => {
580580 debug!(cmd = ?_cmd, "not a hardcoded subcommand; returning to normal handling");
src/doc/rustc-dev-guide/src/profiling/with_rustc_perf.md+1-3
......@@ -7,9 +7,7 @@ However, using the suite manually can be a bit cumbersome. To make this easier f
77the compiler build system (`bootstrap`) also provides built-in integration with the benchmarking suite,
88which will download and build the suite for you, build a local compiler toolchain and let you profile it using a simplified command-line interface.
99
10You can use the `./x perf -- <command> [options]` command to use this integration.
11
12> Note that you need to specify arguments after `--` in the `x perf` command! You will not be able to pass arguments without the double dashes.
10You can use the `./x perf <command> [options]` command to use this integration.
1311
1412You can use normal bootstrap flags for this command, such as `--stage 1` or `--stage 2`, for example to modify the stage of the created sysroot. It might also be useful to configure `config.toml` to better support profiling, e.g. set `rust.debuginfo-level = 1` to add source line information to the built compiler.
1513
src/etc/completions/x.fish+216-34
......@@ -73,7 +73,7 @@ complete -c x -n "__fish_x_needs_command" -a "run" -d 'Run tools contained in th
7373complete -c x -n "__fish_x_needs_command" -a "setup" -d 'Set up the environment for development'
7474complete -c x -n "__fish_x_needs_command" -a "suggest" -d 'Suggest a subset of tests to run, based on modified files'
7575complete -c x -n "__fish_x_needs_command" -a "vendor" -d 'Vendor dependencies'
76complete -c x -n "__fish_x_needs_command" -a "perf" -d 'Perform profiling and benchmarking of the compiler using the `rustc-perf-wrapper` tool'
76complete -c x -n "__fish_x_needs_command" -a "perf" -d 'Perform profiling and benchmarking of the compiler using `rustc-perf`'
7777complete -c x -n "__fish_x_using_subcommand build" -l config -d 'TOML configuration file for build' -r -F
7878complete -c x -n "__fish_x_using_subcommand build" -l build-dir -d 'Build directory, overrides `build.build-dir` in `config.toml`' -r -f -a "(__fish_complete_directories)"
7979complete -c x -n "__fish_x_using_subcommand build" -l build -d 'build target of the stage0 compiler' -r -f
......@@ -638,36 +638,218 @@ complete -c x -n "__fish_x_using_subcommand vendor" -l llvm-profile-generate -d
638638complete -c x -n "__fish_x_using_subcommand vendor" -l enable-bolt-settings -d 'Enable BOLT link flags'
639639complete -c x -n "__fish_x_using_subcommand vendor" -l skip-stage0-validation -d 'Skip stage0 compiler validation'
640640complete -c x -n "__fish_x_using_subcommand vendor" -s h -l help -d 'Print help (see more with \'--help\')'
641complete -c x -n "__fish_x_using_subcommand perf" -l config -d 'TOML configuration file for build' -r -F
642complete -c x -n "__fish_x_using_subcommand perf" -l build-dir -d 'Build directory, overrides `build.build-dir` in `config.toml`' -r -f -a "(__fish_complete_directories)"
643complete -c x -n "__fish_x_using_subcommand perf" -l build -d 'build target of the stage0 compiler' -r -f
644complete -c x -n "__fish_x_using_subcommand perf" -l host -d 'host targets to build' -r -f
645complete -c x -n "__fish_x_using_subcommand perf" -l target -d 'target targets to build' -r -f
646complete -c x -n "__fish_x_using_subcommand perf" -l exclude -d 'build paths to exclude' -r -F
647complete -c x -n "__fish_x_using_subcommand perf" -l skip -d 'build paths to skip' -r -F
648complete -c x -n "__fish_x_using_subcommand perf" -l rustc-error-format -r -f
649complete -c x -n "__fish_x_using_subcommand perf" -l on-fail -d 'command to run on failure' -r -f -a "(__fish_complete_command)"
650complete -c x -n "__fish_x_using_subcommand perf" -l stage -d 'stage to build (indicates compiler to use/test, e.g., stage 0 uses the bootstrap compiler, stage 1 the stage 0 rustc artifacts, etc.)' -r -f
651complete -c x -n "__fish_x_using_subcommand perf" -l keep-stage -d 'stage(s) to keep without recompiling (pass multiple times to keep e.g., both stages 0 and 1)' -r -f
652complete -c x -n "__fish_x_using_subcommand perf" -l keep-stage-std -d 'stage(s) of the standard library to keep without recompiling (pass multiple times to keep e.g., both stages 0 and 1)' -r -f
653complete -c x -n "__fish_x_using_subcommand perf" -l src -d 'path to the root of the rust checkout' -r -f -a "(__fish_complete_directories)"
654complete -c x -n "__fish_x_using_subcommand perf" -s j -l jobs -d 'number of jobs to run in parallel' -r -f
655complete -c x -n "__fish_x_using_subcommand perf" -l warnings -d 'if value is deny, will deny warnings if value is warn, will emit warnings otherwise, use the default configured behaviour' -r -f -a "{deny\t'',warn\t'',default\t''}"
656complete -c x -n "__fish_x_using_subcommand perf" -l error-format -d 'rustc error format' -r -f
657complete -c x -n "__fish_x_using_subcommand perf" -l color -d 'whether to use color in cargo and rustc output' -r -f -a "{always\t'',never\t'',auto\t''}"
658complete -c x -n "__fish_x_using_subcommand perf" -l rust-profile-generate -d 'generate PGO profile with rustc build' -r -F
659complete -c x -n "__fish_x_using_subcommand perf" -l rust-profile-use -d 'use PGO profile for rustc build' -r -F
660complete -c x -n "__fish_x_using_subcommand perf" -l llvm-profile-use -d 'use PGO profile for LLVM build' -r -F
661complete -c x -n "__fish_x_using_subcommand perf" -l reproducible-artifact -d 'Additional reproducible artifacts that should be added to the reproducible artifacts archive' -r
662complete -c x -n "__fish_x_using_subcommand perf" -l set -d 'override options in config.toml' -r -f
663complete -c x -n "__fish_x_using_subcommand perf" -s v -l verbose -d 'use verbose output (-vv for very verbose)'
664complete -c x -n "__fish_x_using_subcommand perf" -s i -l incremental -d 'use incremental compilation'
665complete -c x -n "__fish_x_using_subcommand perf" -l include-default-paths -d 'include default paths in addition to the provided ones'
666complete -c x -n "__fish_x_using_subcommand perf" -l dry-run -d 'dry run; don\'t build anything'
667complete -c x -n "__fish_x_using_subcommand perf" -l dump-bootstrap-shims -d 'Indicates whether to dump the work done from bootstrap shims'
668complete -c x -n "__fish_x_using_subcommand perf" -l json-output -d 'use message-format=json'
669complete -c x -n "__fish_x_using_subcommand perf" -l bypass-bootstrap-lock -d 'Bootstrap uses this value to decide whether it should bypass locking the build process. This is rarely needed (e.g., compiling the std library for different targets in parallel)'
670complete -c x -n "__fish_x_using_subcommand perf" -l llvm-profile-generate -d 'generate PGO profile with llvm built for rustc'
671complete -c x -n "__fish_x_using_subcommand perf" -l enable-bolt-settings -d 'Enable BOLT link flags'
672complete -c x -n "__fish_x_using_subcommand perf" -l skip-stage0-validation -d 'Skip stage0 compiler validation'
673complete -c x -n "__fish_x_using_subcommand perf" -s h -l help -d 'Print help (see more with \'--help\')'
641complete -c x -n "__fish_x_using_subcommand perf; and not __fish_seen_subcommand_from eprintln samply cachegrind benchmark compare" -l config -d 'TOML configuration file for build' -r -F
642complete -c x -n "__fish_x_using_subcommand perf; and not __fish_seen_subcommand_from eprintln samply cachegrind benchmark compare" -l build-dir -d 'Build directory, overrides `build.build-dir` in `config.toml`' -r -f -a "(__fish_complete_directories)"
643complete -c x -n "__fish_x_using_subcommand perf; and not __fish_seen_subcommand_from eprintln samply cachegrind benchmark compare" -l build -d 'build target of the stage0 compiler' -r -f
644complete -c x -n "__fish_x_using_subcommand perf; and not __fish_seen_subcommand_from eprintln samply cachegrind benchmark compare" -l host -d 'host targets to build' -r -f
645complete -c x -n "__fish_x_using_subcommand perf; and not __fish_seen_subcommand_from eprintln samply cachegrind benchmark compare" -l target -d 'target targets to build' -r -f
646complete -c x -n "__fish_x_using_subcommand perf; and not __fish_seen_subcommand_from eprintln samply cachegrind benchmark compare" -l exclude -d 'build paths to exclude' -r -F
647complete -c x -n "__fish_x_using_subcommand perf; and not __fish_seen_subcommand_from eprintln samply cachegrind benchmark compare" -l skip -d 'build paths to skip' -r -F
648complete -c x -n "__fish_x_using_subcommand perf; and not __fish_seen_subcommand_from eprintln samply cachegrind benchmark compare" -l rustc-error-format -r -f
649complete -c x -n "__fish_x_using_subcommand perf; and not __fish_seen_subcommand_from eprintln samply cachegrind benchmark compare" -l on-fail -d 'command to run on failure' -r -f -a "(__fish_complete_command)"
650complete -c x -n "__fish_x_using_subcommand perf; and not __fish_seen_subcommand_from eprintln samply cachegrind benchmark compare" -l stage -d 'stage to build (indicates compiler to use/test, e.g., stage 0 uses the bootstrap compiler, stage 1 the stage 0 rustc artifacts, etc.)' -r -f
651complete -c x -n "__fish_x_using_subcommand perf; and not __fish_seen_subcommand_from eprintln samply cachegrind benchmark compare" -l keep-stage -d 'stage(s) to keep without recompiling (pass multiple times to keep e.g., both stages 0 and 1)' -r -f
652complete -c x -n "__fish_x_using_subcommand perf; and not __fish_seen_subcommand_from eprintln samply cachegrind benchmark compare" -l keep-stage-std -d 'stage(s) of the standard library to keep without recompiling (pass multiple times to keep e.g., both stages 0 and 1)' -r -f
653complete -c x -n "__fish_x_using_subcommand perf; and not __fish_seen_subcommand_from eprintln samply cachegrind benchmark compare" -l src -d 'path to the root of the rust checkout' -r -f -a "(__fish_complete_directories)"
654complete -c x -n "__fish_x_using_subcommand perf; and not __fish_seen_subcommand_from eprintln samply cachegrind benchmark compare" -s j -l jobs -d 'number of jobs to run in parallel' -r -f
655complete -c x -n "__fish_x_using_subcommand perf; and not __fish_seen_subcommand_from eprintln samply cachegrind benchmark compare" -l warnings -d 'if value is deny, will deny warnings if value is warn, will emit warnings otherwise, use the default configured behaviour' -r -f -a "{deny\t'',warn\t'',default\t''}"
656complete -c x -n "__fish_x_using_subcommand perf; and not __fish_seen_subcommand_from eprintln samply cachegrind benchmark compare" -l error-format -d 'rustc error format' -r -f
657complete -c x -n "__fish_x_using_subcommand perf; and not __fish_seen_subcommand_from eprintln samply cachegrind benchmark compare" -l color -d 'whether to use color in cargo and rustc output' -r -f -a "{always\t'',never\t'',auto\t''}"
658complete -c x -n "__fish_x_using_subcommand perf; and not __fish_seen_subcommand_from eprintln samply cachegrind benchmark compare" -l rust-profile-generate -d 'generate PGO profile with rustc build' -r -F
659complete -c x -n "__fish_x_using_subcommand perf; and not __fish_seen_subcommand_from eprintln samply cachegrind benchmark compare" -l rust-profile-use -d 'use PGO profile for rustc build' -r -F
660complete -c x -n "__fish_x_using_subcommand perf; and not __fish_seen_subcommand_from eprintln samply cachegrind benchmark compare" -l llvm-profile-use -d 'use PGO profile for LLVM build' -r -F
661complete -c x -n "__fish_x_using_subcommand perf; and not __fish_seen_subcommand_from eprintln samply cachegrind benchmark compare" -l reproducible-artifact -d 'Additional reproducible artifacts that should be added to the reproducible artifacts archive' -r
662complete -c x -n "__fish_x_using_subcommand perf; and not __fish_seen_subcommand_from eprintln samply cachegrind benchmark compare" -l set -d 'override options in config.toml' -r -f
663complete -c x -n "__fish_x_using_subcommand perf; and not __fish_seen_subcommand_from eprintln samply cachegrind benchmark compare" -s v -l verbose -d 'use verbose output (-vv for very verbose)'
664complete -c x -n "__fish_x_using_subcommand perf; and not __fish_seen_subcommand_from eprintln samply cachegrind benchmark compare" -s i -l incremental -d 'use incremental compilation'
665complete -c x -n "__fish_x_using_subcommand perf; and not __fish_seen_subcommand_from eprintln samply cachegrind benchmark compare" -l include-default-paths -d 'include default paths in addition to the provided ones'
666complete -c x -n "__fish_x_using_subcommand perf; and not __fish_seen_subcommand_from eprintln samply cachegrind benchmark compare" -l dry-run -d 'dry run; don\'t build anything'
667complete -c x -n "__fish_x_using_subcommand perf; and not __fish_seen_subcommand_from eprintln samply cachegrind benchmark compare" -l dump-bootstrap-shims -d 'Indicates whether to dump the work done from bootstrap shims'
668complete -c x -n "__fish_x_using_subcommand perf; and not __fish_seen_subcommand_from eprintln samply cachegrind benchmark compare" -l json-output -d 'use message-format=json'
669complete -c x -n "__fish_x_using_subcommand perf; and not __fish_seen_subcommand_from eprintln samply cachegrind benchmark compare" -l bypass-bootstrap-lock -d 'Bootstrap uses this value to decide whether it should bypass locking the build process. This is rarely needed (e.g., compiling the std library for different targets in parallel)'
670complete -c x -n "__fish_x_using_subcommand perf; and not __fish_seen_subcommand_from eprintln samply cachegrind benchmark compare" -l llvm-profile-generate -d 'generate PGO profile with llvm built for rustc'
671complete -c x -n "__fish_x_using_subcommand perf; and not __fish_seen_subcommand_from eprintln samply cachegrind benchmark compare" -l enable-bolt-settings -d 'Enable BOLT link flags'
672complete -c x -n "__fish_x_using_subcommand perf; and not __fish_seen_subcommand_from eprintln samply cachegrind benchmark compare" -l skip-stage0-validation -d 'Skip stage0 compiler validation'
673complete -c x -n "__fish_x_using_subcommand perf; and not __fish_seen_subcommand_from eprintln samply cachegrind benchmark compare" -s h -l help -d 'Print help (see more with \'--help\')'
674complete -c x -n "__fish_x_using_subcommand perf; and not __fish_seen_subcommand_from eprintln samply cachegrind benchmark compare" -a "eprintln" -d 'Run `profile_local eprintln`. This executes the compiler on the given benchmarks and stores its stderr output'
675complete -c x -n "__fish_x_using_subcommand perf; and not __fish_seen_subcommand_from eprintln samply cachegrind benchmark compare" -a "samply" -d 'Run `profile_local samply` This executes the compiler on the given benchmarks and profiles it with `samply`. You need to install `samply`, e.g. using `cargo install samply`'
676complete -c x -n "__fish_x_using_subcommand perf; and not __fish_seen_subcommand_from eprintln samply cachegrind benchmark compare" -a "cachegrind" -d 'Run `profile_local cachegrind`. This executes the compiler on the given benchmarks under `Cachegrind`'
677complete -c x -n "__fish_x_using_subcommand perf; and not __fish_seen_subcommand_from eprintln samply cachegrind benchmark compare" -a "benchmark" -d 'Run compile benchmarks with a locally built compiler'
678complete -c x -n "__fish_x_using_subcommand perf; and not __fish_seen_subcommand_from eprintln samply cachegrind benchmark compare" -a "compare" -d 'Compare the results of two previously executed benchmark runs'
679complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from eprintln" -l include -d 'Select the benchmarks that you want to run (separated by commas). If unspecified, all benchmarks will be executed' -r
680complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from eprintln" -l exclude -d 'Select the benchmarks matching a prefix in this comma-separated list that you don\'t want to run' -r
681complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from eprintln" -l scenarios -d 'Select the scenarios that should be benchmarked' -r -f -a "{Full\t'',IncrFull\t'',IncrUnchanged\t'',IncrPatched\t''}"
682complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from eprintln" -l profiles -d 'Select the profiles that should be benchmarked' -r -f -a "{Check\t'',Debug\t'',Doc\t'',Opt\t'',Clippy\t''}"
683complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from eprintln" -l config -d 'TOML configuration file for build' -r -F
684complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from eprintln" -l build-dir -d 'Build directory, overrides `build.build-dir` in `config.toml`' -r -f -a "(__fish_complete_directories)"
685complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from eprintln" -l build -d 'build target of the stage0 compiler' -r -f
686complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from eprintln" -l host -d 'host targets to build' -r -f
687complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from eprintln" -l target -d 'target targets to build' -r -f
688complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from eprintln" -l skip -d 'build paths to skip' -r -F
689complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from eprintln" -l rustc-error-format -r -f
690complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from eprintln" -l on-fail -d 'command to run on failure' -r -f -a "(__fish_complete_command)"
691complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from eprintln" -l stage -d 'stage to build (indicates compiler to use/test, e.g., stage 0 uses the bootstrap compiler, stage 1 the stage 0 rustc artifacts, etc.)' -r -f
692complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from eprintln" -l keep-stage -d 'stage(s) to keep without recompiling (pass multiple times to keep e.g., both stages 0 and 1)' -r -f
693complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from eprintln" -l keep-stage-std -d 'stage(s) of the standard library to keep without recompiling (pass multiple times to keep e.g., both stages 0 and 1)' -r -f
694complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from eprintln" -l src -d 'path to the root of the rust checkout' -r -f -a "(__fish_complete_directories)"
695complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from eprintln" -s j -l jobs -d 'number of jobs to run in parallel' -r -f
696complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from eprintln" -l warnings -d 'if value is deny, will deny warnings if value is warn, will emit warnings otherwise, use the default configured behaviour' -r -f -a "{deny\t'',warn\t'',default\t''}"
697complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from eprintln" -l error-format -d 'rustc error format' -r -f
698complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from eprintln" -l color -d 'whether to use color in cargo and rustc output' -r -f -a "{always\t'',never\t'',auto\t''}"
699complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from eprintln" -l rust-profile-generate -d 'generate PGO profile with rustc build' -r -F
700complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from eprintln" -l rust-profile-use -d 'use PGO profile for rustc build' -r -F
701complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from eprintln" -l llvm-profile-use -d 'use PGO profile for LLVM build' -r -F
702complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from eprintln" -l reproducible-artifact -d 'Additional reproducible artifacts that should be added to the reproducible artifacts archive' -r
703complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from eprintln" -l set -d 'override options in config.toml' -r -f
704complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from eprintln" -s v -l verbose -d 'use verbose output (-vv for very verbose)'
705complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from eprintln" -s i -l incremental -d 'use incremental compilation'
706complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from eprintln" -l include-default-paths -d 'include default paths in addition to the provided ones'
707complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from eprintln" -l dry-run -d 'dry run; don\'t build anything'
708complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from eprintln" -l dump-bootstrap-shims -d 'Indicates whether to dump the work done from bootstrap shims'
709complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from eprintln" -l json-output -d 'use message-format=json'
710complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from eprintln" -l bypass-bootstrap-lock -d 'Bootstrap uses this value to decide whether it should bypass locking the build process. This is rarely needed (e.g., compiling the std library for different targets in parallel)'
711complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from eprintln" -l llvm-profile-generate -d 'generate PGO profile with llvm built for rustc'
712complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from eprintln" -l enable-bolt-settings -d 'Enable BOLT link flags'
713complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from eprintln" -l skip-stage0-validation -d 'Skip stage0 compiler validation'
714complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from eprintln" -s h -l help -d 'Print help (see more with \'--help\')'
715complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from samply" -l include -d 'Select the benchmarks that you want to run (separated by commas). If unspecified, all benchmarks will be executed' -r
716complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from samply" -l exclude -d 'Select the benchmarks matching a prefix in this comma-separated list that you don\'t want to run' -r
717complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from samply" -l scenarios -d 'Select the scenarios that should be benchmarked' -r -f -a "{Full\t'',IncrFull\t'',IncrUnchanged\t'',IncrPatched\t''}"
718complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from samply" -l profiles -d 'Select the profiles that should be benchmarked' -r -f -a "{Check\t'',Debug\t'',Doc\t'',Opt\t'',Clippy\t''}"
719complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from samply" -l config -d 'TOML configuration file for build' -r -F
720complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from samply" -l build-dir -d 'Build directory, overrides `build.build-dir` in `config.toml`' -r -f -a "(__fish_complete_directories)"
721complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from samply" -l build -d 'build target of the stage0 compiler' -r -f
722complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from samply" -l host -d 'host targets to build' -r -f
723complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from samply" -l target -d 'target targets to build' -r -f
724complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from samply" -l skip -d 'build paths to skip' -r -F
725complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from samply" -l rustc-error-format -r -f
726complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from samply" -l on-fail -d 'command to run on failure' -r -f -a "(__fish_complete_command)"
727complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from samply" -l stage -d 'stage to build (indicates compiler to use/test, e.g., stage 0 uses the bootstrap compiler, stage 1 the stage 0 rustc artifacts, etc.)' -r -f
728complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from samply" -l keep-stage -d 'stage(s) to keep without recompiling (pass multiple times to keep e.g., both stages 0 and 1)' -r -f
729complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from samply" -l keep-stage-std -d 'stage(s) of the standard library to keep without recompiling (pass multiple times to keep e.g., both stages 0 and 1)' -r -f
730complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from samply" -l src -d 'path to the root of the rust checkout' -r -f -a "(__fish_complete_directories)"
731complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from samply" -s j -l jobs -d 'number of jobs to run in parallel' -r -f
732complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from samply" -l warnings -d 'if value is deny, will deny warnings if value is warn, will emit warnings otherwise, use the default configured behaviour' -r -f -a "{deny\t'',warn\t'',default\t''}"
733complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from samply" -l error-format -d 'rustc error format' -r -f
734complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from samply" -l color -d 'whether to use color in cargo and rustc output' -r -f -a "{always\t'',never\t'',auto\t''}"
735complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from samply" -l rust-profile-generate -d 'generate PGO profile with rustc build' -r -F
736complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from samply" -l rust-profile-use -d 'use PGO profile for rustc build' -r -F
737complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from samply" -l llvm-profile-use -d 'use PGO profile for LLVM build' -r -F
738complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from samply" -l reproducible-artifact -d 'Additional reproducible artifacts that should be added to the reproducible artifacts archive' -r
739complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from samply" -l set -d 'override options in config.toml' -r -f
740complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from samply" -s v -l verbose -d 'use verbose output (-vv for very verbose)'
741complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from samply" -s i -l incremental -d 'use incremental compilation'
742complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from samply" -l include-default-paths -d 'include default paths in addition to the provided ones'
743complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from samply" -l dry-run -d 'dry run; don\'t build anything'
744complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from samply" -l dump-bootstrap-shims -d 'Indicates whether to dump the work done from bootstrap shims'
745complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from samply" -l json-output -d 'use message-format=json'
746complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from samply" -l bypass-bootstrap-lock -d 'Bootstrap uses this value to decide whether it should bypass locking the build process. This is rarely needed (e.g., compiling the std library for different targets in parallel)'
747complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from samply" -l llvm-profile-generate -d 'generate PGO profile with llvm built for rustc'
748complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from samply" -l enable-bolt-settings -d 'Enable BOLT link flags'
749complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from samply" -l skip-stage0-validation -d 'Skip stage0 compiler validation'
750complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from samply" -s h -l help -d 'Print help (see more with \'--help\')'
751complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from cachegrind" -l include -d 'Select the benchmarks that you want to run (separated by commas). If unspecified, all benchmarks will be executed' -r
752complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from cachegrind" -l exclude -d 'Select the benchmarks matching a prefix in this comma-separated list that you don\'t want to run' -r
753complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from cachegrind" -l scenarios -d 'Select the scenarios that should be benchmarked' -r -f -a "{Full\t'',IncrFull\t'',IncrUnchanged\t'',IncrPatched\t''}"
754complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from cachegrind" -l profiles -d 'Select the profiles that should be benchmarked' -r -f -a "{Check\t'',Debug\t'',Doc\t'',Opt\t'',Clippy\t''}"
755complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from cachegrind" -l config -d 'TOML configuration file for build' -r -F
756complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from cachegrind" -l build-dir -d 'Build directory, overrides `build.build-dir` in `config.toml`' -r -f -a "(__fish_complete_directories)"
757complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from cachegrind" -l build -d 'build target of the stage0 compiler' -r -f
758complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from cachegrind" -l host -d 'host targets to build' -r -f
759complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from cachegrind" -l target -d 'target targets to build' -r -f
760complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from cachegrind" -l skip -d 'build paths to skip' -r -F
761complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from cachegrind" -l rustc-error-format -r -f
762complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from cachegrind" -l on-fail -d 'command to run on failure' -r -f -a "(__fish_complete_command)"
763complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from cachegrind" -l stage -d 'stage to build (indicates compiler to use/test, e.g., stage 0 uses the bootstrap compiler, stage 1 the stage 0 rustc artifacts, etc.)' -r -f
764complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from cachegrind" -l keep-stage -d 'stage(s) to keep without recompiling (pass multiple times to keep e.g., both stages 0 and 1)' -r -f
765complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from cachegrind" -l keep-stage-std -d 'stage(s) of the standard library to keep without recompiling (pass multiple times to keep e.g., both stages 0 and 1)' -r -f
766complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from cachegrind" -l src -d 'path to the root of the rust checkout' -r -f -a "(__fish_complete_directories)"
767complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from cachegrind" -s j -l jobs -d 'number of jobs to run in parallel' -r -f
768complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from cachegrind" -l warnings -d 'if value is deny, will deny warnings if value is warn, will emit warnings otherwise, use the default configured behaviour' -r -f -a "{deny\t'',warn\t'',default\t''}"
769complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from cachegrind" -l error-format -d 'rustc error format' -r -f
770complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from cachegrind" -l color -d 'whether to use color in cargo and rustc output' -r -f -a "{always\t'',never\t'',auto\t''}"
771complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from cachegrind" -l rust-profile-generate -d 'generate PGO profile with rustc build' -r -F
772complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from cachegrind" -l rust-profile-use -d 'use PGO profile for rustc build' -r -F
773complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from cachegrind" -l llvm-profile-use -d 'use PGO profile for LLVM build' -r -F
774complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from cachegrind" -l reproducible-artifact -d 'Additional reproducible artifacts that should be added to the reproducible artifacts archive' -r
775complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from cachegrind" -l set -d 'override options in config.toml' -r -f
776complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from cachegrind" -s v -l verbose -d 'use verbose output (-vv for very verbose)'
777complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from cachegrind" -s i -l incremental -d 'use incremental compilation'
778complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from cachegrind" -l include-default-paths -d 'include default paths in addition to the provided ones'
779complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from cachegrind" -l dry-run -d 'dry run; don\'t build anything'
780complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from cachegrind" -l dump-bootstrap-shims -d 'Indicates whether to dump the work done from bootstrap shims'
781complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from cachegrind" -l json-output -d 'use message-format=json'
782complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from cachegrind" -l bypass-bootstrap-lock -d 'Bootstrap uses this value to decide whether it should bypass locking the build process. This is rarely needed (e.g., compiling the std library for different targets in parallel)'
783complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from cachegrind" -l llvm-profile-generate -d 'generate PGO profile with llvm built for rustc'
784complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from cachegrind" -l enable-bolt-settings -d 'Enable BOLT link flags'
785complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from cachegrind" -l skip-stage0-validation -d 'Skip stage0 compiler validation'
786complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from cachegrind" -s h -l help -d 'Print help (see more with \'--help\')'
787complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from benchmark" -l include -d 'Select the benchmarks that you want to run (separated by commas). If unspecified, all benchmarks will be executed' -r
788complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from benchmark" -l exclude -d 'Select the benchmarks matching a prefix in this comma-separated list that you don\'t want to run' -r
789complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from benchmark" -l scenarios -d 'Select the scenarios that should be benchmarked' -r -f -a "{Full\t'',IncrFull\t'',IncrUnchanged\t'',IncrPatched\t''}"
790complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from benchmark" -l profiles -d 'Select the profiles that should be benchmarked' -r -f -a "{Check\t'',Debug\t'',Doc\t'',Opt\t'',Clippy\t''}"
791complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from benchmark" -l config -d 'TOML configuration file for build' -r -F
792complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from benchmark" -l build-dir -d 'Build directory, overrides `build.build-dir` in `config.toml`' -r -f -a "(__fish_complete_directories)"
793complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from benchmark" -l build -d 'build target of the stage0 compiler' -r -f
794complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from benchmark" -l host -d 'host targets to build' -r -f
795complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from benchmark" -l target -d 'target targets to build' -r -f
796complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from benchmark" -l skip -d 'build paths to skip' -r -F
797complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from benchmark" -l rustc-error-format -r -f
798complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from benchmark" -l on-fail -d 'command to run on failure' -r -f -a "(__fish_complete_command)"
799complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from benchmark" -l stage -d 'stage to build (indicates compiler to use/test, e.g., stage 0 uses the bootstrap compiler, stage 1 the stage 0 rustc artifacts, etc.)' -r -f
800complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from benchmark" -l keep-stage -d 'stage(s) to keep without recompiling (pass multiple times to keep e.g., both stages 0 and 1)' -r -f
801complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from benchmark" -l keep-stage-std -d 'stage(s) of the standard library to keep without recompiling (pass multiple times to keep e.g., both stages 0 and 1)' -r -f
802complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from benchmark" -l src -d 'path to the root of the rust checkout' -r -f -a "(__fish_complete_directories)"
803complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from benchmark" -s j -l jobs -d 'number of jobs to run in parallel' -r -f
804complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from benchmark" -l warnings -d 'if value is deny, will deny warnings if value is warn, will emit warnings otherwise, use the default configured behaviour' -r -f -a "{deny\t'',warn\t'',default\t''}"
805complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from benchmark" -l error-format -d 'rustc error format' -r -f
806complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from benchmark" -l color -d 'whether to use color in cargo and rustc output' -r -f -a "{always\t'',never\t'',auto\t''}"
807complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from benchmark" -l rust-profile-generate -d 'generate PGO profile with rustc build' -r -F
808complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from benchmark" -l rust-profile-use -d 'use PGO profile for rustc build' -r -F
809complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from benchmark" -l llvm-profile-use -d 'use PGO profile for LLVM build' -r -F
810complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from benchmark" -l reproducible-artifact -d 'Additional reproducible artifacts that should be added to the reproducible artifacts archive' -r
811complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from benchmark" -l set -d 'override options in config.toml' -r -f
812complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from benchmark" -s v -l verbose -d 'use verbose output (-vv for very verbose)'
813complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from benchmark" -s i -l incremental -d 'use incremental compilation'
814complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from benchmark" -l include-default-paths -d 'include default paths in addition to the provided ones'
815complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from benchmark" -l dry-run -d 'dry run; don\'t build anything'
816complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from benchmark" -l dump-bootstrap-shims -d 'Indicates whether to dump the work done from bootstrap shims'
817complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from benchmark" -l json-output -d 'use message-format=json'
818complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from benchmark" -l bypass-bootstrap-lock -d 'Bootstrap uses this value to decide whether it should bypass locking the build process. This is rarely needed (e.g., compiling the std library for different targets in parallel)'
819complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from benchmark" -l llvm-profile-generate -d 'generate PGO profile with llvm built for rustc'
820complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from benchmark" -l enable-bolt-settings -d 'Enable BOLT link flags'
821complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from benchmark" -l skip-stage0-validation -d 'Skip stage0 compiler validation'
822complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from benchmark" -s h -l help -d 'Print help (see more with \'--help\')'
823complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from compare" -l config -d 'TOML configuration file for build' -r -F
824complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from compare" -l build-dir -d 'Build directory, overrides `build.build-dir` in `config.toml`' -r -f -a "(__fish_complete_directories)"
825complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from compare" -l build -d 'build target of the stage0 compiler' -r -f
826complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from compare" -l host -d 'host targets to build' -r -f
827complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from compare" -l target -d 'target targets to build' -r -f
828complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from compare" -l exclude -d 'build paths to exclude' -r -F
829complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from compare" -l skip -d 'build paths to skip' -r -F
830complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from compare" -l rustc-error-format -r -f
831complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from compare" -l on-fail -d 'command to run on failure' -r -f -a "(__fish_complete_command)"
832complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from compare" -l stage -d 'stage to build (indicates compiler to use/test, e.g., stage 0 uses the bootstrap compiler, stage 1 the stage 0 rustc artifacts, etc.)' -r -f
833complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from compare" -l keep-stage -d 'stage(s) to keep without recompiling (pass multiple times to keep e.g., both stages 0 and 1)' -r -f
834complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from compare" -l keep-stage-std -d 'stage(s) of the standard library to keep without recompiling (pass multiple times to keep e.g., both stages 0 and 1)' -r -f
835complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from compare" -l src -d 'path to the root of the rust checkout' -r -f -a "(__fish_complete_directories)"
836complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from compare" -s j -l jobs -d 'number of jobs to run in parallel' -r -f
837complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from compare" -l warnings -d 'if value is deny, will deny warnings if value is warn, will emit warnings otherwise, use the default configured behaviour' -r -f -a "{deny\t'',warn\t'',default\t''}"
838complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from compare" -l error-format -d 'rustc error format' -r -f
839complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from compare" -l color -d 'whether to use color in cargo and rustc output' -r -f -a "{always\t'',never\t'',auto\t''}"
840complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from compare" -l rust-profile-generate -d 'generate PGO profile with rustc build' -r -F
841complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from compare" -l rust-profile-use -d 'use PGO profile for rustc build' -r -F
842complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from compare" -l llvm-profile-use -d 'use PGO profile for LLVM build' -r -F
843complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from compare" -l reproducible-artifact -d 'Additional reproducible artifacts that should be added to the reproducible artifacts archive' -r
844complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from compare" -l set -d 'override options in config.toml' -r -f
845complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from compare" -s v -l verbose -d 'use verbose output (-vv for very verbose)'
846complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from compare" -s i -l incremental -d 'use incremental compilation'
847complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from compare" -l include-default-paths -d 'include default paths in addition to the provided ones'
848complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from compare" -l dry-run -d 'dry run; don\'t build anything'
849complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from compare" -l dump-bootstrap-shims -d 'Indicates whether to dump the work done from bootstrap shims'
850complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from compare" -l json-output -d 'use message-format=json'
851complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from compare" -l bypass-bootstrap-lock -d 'Bootstrap uses this value to decide whether it should bypass locking the build process. This is rarely needed (e.g., compiling the std library for different targets in parallel)'
852complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from compare" -l llvm-profile-generate -d 'generate PGO profile with llvm built for rustc'
853complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from compare" -l enable-bolt-settings -d 'Enable BOLT link flags'
854complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from compare" -l skip-stage0-validation -d 'Skip stage0 compiler validation'
855complete -c x -n "__fish_x_using_subcommand perf; and __fish_seen_subcommand_from compare" -s h -l help -d 'Print help (see more with \'--help\')'
src/etc/completions/x.ps1+218-1
......@@ -74,7 +74,7 @@ Register-ArgumentCompleter -Native -CommandName 'x' -ScriptBlock {
7474 [CompletionResult]::new('setup', 'setup', [CompletionResultType]::ParameterValue, 'Set up the environment for development')
7575 [CompletionResult]::new('suggest', 'suggest', [CompletionResultType]::ParameterValue, 'Suggest a subset of tests to run, based on modified files')
7676 [CompletionResult]::new('vendor', 'vendor', [CompletionResultType]::ParameterValue, 'Vendor dependencies')
77 [CompletionResult]::new('perf', 'perf', [CompletionResultType]::ParameterValue, 'Perform profiling and benchmarking of the compiler using the `rustc-perf-wrapper` tool')
77 [CompletionResult]::new('perf', 'perf', [CompletionResultType]::ParameterValue, 'Perform profiling and benchmarking of the compiler using `rustc-perf`')
7878 break
7979 }
8080 'x;build' {
......@@ -754,6 +754,223 @@ Register-ArgumentCompleter -Native -CommandName 'x' -ScriptBlock {
754754 break
755755 }
756756 'x;perf' {
757 [CompletionResult]::new('--config', '--config', [CompletionResultType]::ParameterName, 'TOML configuration file for build')
758 [CompletionResult]::new('--build-dir', '--build-dir', [CompletionResultType]::ParameterName, 'Build directory, overrides `build.build-dir` in `config.toml`')
759 [CompletionResult]::new('--build', '--build', [CompletionResultType]::ParameterName, 'build target of the stage0 compiler')
760 [CompletionResult]::new('--host', '--host', [CompletionResultType]::ParameterName, 'host targets to build')
761 [CompletionResult]::new('--target', '--target', [CompletionResultType]::ParameterName, 'target targets to build')
762 [CompletionResult]::new('--exclude', '--exclude', [CompletionResultType]::ParameterName, 'build paths to exclude')
763 [CompletionResult]::new('--skip', '--skip', [CompletionResultType]::ParameterName, 'build paths to skip')
764 [CompletionResult]::new('--rustc-error-format', '--rustc-error-format', [CompletionResultType]::ParameterName, 'rustc-error-format')
765 [CompletionResult]::new('--on-fail', '--on-fail', [CompletionResultType]::ParameterName, 'command to run on failure')
766 [CompletionResult]::new('--stage', '--stage', [CompletionResultType]::ParameterName, 'stage to build (indicates compiler to use/test, e.g., stage 0 uses the bootstrap compiler, stage 1 the stage 0 rustc artifacts, etc.)')
767 [CompletionResult]::new('--keep-stage', '--keep-stage', [CompletionResultType]::ParameterName, 'stage(s) to keep without recompiling (pass multiple times to keep e.g., both stages 0 and 1)')
768 [CompletionResult]::new('--keep-stage-std', '--keep-stage-std', [CompletionResultType]::ParameterName, 'stage(s) of the standard library to keep without recompiling (pass multiple times to keep e.g., both stages 0 and 1)')
769 [CompletionResult]::new('--src', '--src', [CompletionResultType]::ParameterName, 'path to the root of the rust checkout')
770 [CompletionResult]::new('-j', '-j', [CompletionResultType]::ParameterName, 'number of jobs to run in parallel')
771 [CompletionResult]::new('--jobs', '--jobs', [CompletionResultType]::ParameterName, 'number of jobs to run in parallel')
772 [CompletionResult]::new('--warnings', '--warnings', [CompletionResultType]::ParameterName, 'if value is deny, will deny warnings if value is warn, will emit warnings otherwise, use the default configured behaviour')
773 [CompletionResult]::new('--error-format', '--error-format', [CompletionResultType]::ParameterName, 'rustc error format')
774 [CompletionResult]::new('--color', '--color', [CompletionResultType]::ParameterName, 'whether to use color in cargo and rustc output')
775 [CompletionResult]::new('--rust-profile-generate', '--rust-profile-generate', [CompletionResultType]::ParameterName, 'generate PGO profile with rustc build')
776 [CompletionResult]::new('--rust-profile-use', '--rust-profile-use', [CompletionResultType]::ParameterName, 'use PGO profile for rustc build')
777 [CompletionResult]::new('--llvm-profile-use', '--llvm-profile-use', [CompletionResultType]::ParameterName, 'use PGO profile for LLVM build')
778 [CompletionResult]::new('--reproducible-artifact', '--reproducible-artifact', [CompletionResultType]::ParameterName, 'Additional reproducible artifacts that should be added to the reproducible artifacts archive')
779 [CompletionResult]::new('--set', '--set', [CompletionResultType]::ParameterName, 'override options in config.toml')
780 [CompletionResult]::new('-v', '-v', [CompletionResultType]::ParameterName, 'use verbose output (-vv for very verbose)')
781 [CompletionResult]::new('--verbose', '--verbose', [CompletionResultType]::ParameterName, 'use verbose output (-vv for very verbose)')
782 [CompletionResult]::new('-i', '-i', [CompletionResultType]::ParameterName, 'use incremental compilation')
783 [CompletionResult]::new('--incremental', '--incremental', [CompletionResultType]::ParameterName, 'use incremental compilation')
784 [CompletionResult]::new('--include-default-paths', '--include-default-paths', [CompletionResultType]::ParameterName, 'include default paths in addition to the provided ones')
785 [CompletionResult]::new('--dry-run', '--dry-run', [CompletionResultType]::ParameterName, 'dry run; don''t build anything')
786 [CompletionResult]::new('--dump-bootstrap-shims', '--dump-bootstrap-shims', [CompletionResultType]::ParameterName, 'Indicates whether to dump the work done from bootstrap shims')
787 [CompletionResult]::new('--json-output', '--json-output', [CompletionResultType]::ParameterName, 'use message-format=json')
788 [CompletionResult]::new('--bypass-bootstrap-lock', '--bypass-bootstrap-lock', [CompletionResultType]::ParameterName, 'Bootstrap uses this value to decide whether it should bypass locking the build process. This is rarely needed (e.g., compiling the std library for different targets in parallel)')
789 [CompletionResult]::new('--llvm-profile-generate', '--llvm-profile-generate', [CompletionResultType]::ParameterName, 'generate PGO profile with llvm built for rustc')
790 [CompletionResult]::new('--enable-bolt-settings', '--enable-bolt-settings', [CompletionResultType]::ParameterName, 'Enable BOLT link flags')
791 [CompletionResult]::new('--skip-stage0-validation', '--skip-stage0-validation', [CompletionResultType]::ParameterName, 'Skip stage0 compiler validation')
792 [CompletionResult]::new('-h', '-h', [CompletionResultType]::ParameterName, 'Print help (see more with ''--help'')')
793 [CompletionResult]::new('--help', '--help', [CompletionResultType]::ParameterName, 'Print help (see more with ''--help'')')
794 [CompletionResult]::new('eprintln', 'eprintln', [CompletionResultType]::ParameterValue, 'Run `profile_local eprintln`. This executes the compiler on the given benchmarks and stores its stderr output')
795 [CompletionResult]::new('samply', 'samply', [CompletionResultType]::ParameterValue, 'Run `profile_local samply` This executes the compiler on the given benchmarks and profiles it with `samply`. You need to install `samply`, e.g. using `cargo install samply`')
796 [CompletionResult]::new('cachegrind', 'cachegrind', [CompletionResultType]::ParameterValue, 'Run `profile_local cachegrind`. This executes the compiler on the given benchmarks under `Cachegrind`')
797 [CompletionResult]::new('benchmark', 'benchmark', [CompletionResultType]::ParameterValue, 'Run compile benchmarks with a locally built compiler')
798 [CompletionResult]::new('compare', 'compare', [CompletionResultType]::ParameterValue, 'Compare the results of two previously executed benchmark runs')
799 break
800 }
801 'x;perf;eprintln' {
802 [CompletionResult]::new('--include', '--include', [CompletionResultType]::ParameterName, 'Select the benchmarks that you want to run (separated by commas). If unspecified, all benchmarks will be executed')
803 [CompletionResult]::new('--exclude', '--exclude', [CompletionResultType]::ParameterName, 'Select the benchmarks matching a prefix in this comma-separated list that you don''t want to run')
804 [CompletionResult]::new('--scenarios', '--scenarios', [CompletionResultType]::ParameterName, 'Select the scenarios that should be benchmarked')
805 [CompletionResult]::new('--profiles', '--profiles', [CompletionResultType]::ParameterName, 'Select the profiles that should be benchmarked')
806 [CompletionResult]::new('--config', '--config', [CompletionResultType]::ParameterName, 'TOML configuration file for build')
807 [CompletionResult]::new('--build-dir', '--build-dir', [CompletionResultType]::ParameterName, 'Build directory, overrides `build.build-dir` in `config.toml`')
808 [CompletionResult]::new('--build', '--build', [CompletionResultType]::ParameterName, 'build target of the stage0 compiler')
809 [CompletionResult]::new('--host', '--host', [CompletionResultType]::ParameterName, 'host targets to build')
810 [CompletionResult]::new('--target', '--target', [CompletionResultType]::ParameterName, 'target targets to build')
811 [CompletionResult]::new('--skip', '--skip', [CompletionResultType]::ParameterName, 'build paths to skip')
812 [CompletionResult]::new('--rustc-error-format', '--rustc-error-format', [CompletionResultType]::ParameterName, 'rustc-error-format')
813 [CompletionResult]::new('--on-fail', '--on-fail', [CompletionResultType]::ParameterName, 'command to run on failure')
814 [CompletionResult]::new('--stage', '--stage', [CompletionResultType]::ParameterName, 'stage to build (indicates compiler to use/test, e.g., stage 0 uses the bootstrap compiler, stage 1 the stage 0 rustc artifacts, etc.)')
815 [CompletionResult]::new('--keep-stage', '--keep-stage', [CompletionResultType]::ParameterName, 'stage(s) to keep without recompiling (pass multiple times to keep e.g., both stages 0 and 1)')
816 [CompletionResult]::new('--keep-stage-std', '--keep-stage-std', [CompletionResultType]::ParameterName, 'stage(s) of the standard library to keep without recompiling (pass multiple times to keep e.g., both stages 0 and 1)')
817 [CompletionResult]::new('--src', '--src', [CompletionResultType]::ParameterName, 'path to the root of the rust checkout')
818 [CompletionResult]::new('-j', '-j', [CompletionResultType]::ParameterName, 'number of jobs to run in parallel')
819 [CompletionResult]::new('--jobs', '--jobs', [CompletionResultType]::ParameterName, 'number of jobs to run in parallel')
820 [CompletionResult]::new('--warnings', '--warnings', [CompletionResultType]::ParameterName, 'if value is deny, will deny warnings if value is warn, will emit warnings otherwise, use the default configured behaviour')
821 [CompletionResult]::new('--error-format', '--error-format', [CompletionResultType]::ParameterName, 'rustc error format')
822 [CompletionResult]::new('--color', '--color', [CompletionResultType]::ParameterName, 'whether to use color in cargo and rustc output')
823 [CompletionResult]::new('--rust-profile-generate', '--rust-profile-generate', [CompletionResultType]::ParameterName, 'generate PGO profile with rustc build')
824 [CompletionResult]::new('--rust-profile-use', '--rust-profile-use', [CompletionResultType]::ParameterName, 'use PGO profile for rustc build')
825 [CompletionResult]::new('--llvm-profile-use', '--llvm-profile-use', [CompletionResultType]::ParameterName, 'use PGO profile for LLVM build')
826 [CompletionResult]::new('--reproducible-artifact', '--reproducible-artifact', [CompletionResultType]::ParameterName, 'Additional reproducible artifacts that should be added to the reproducible artifacts archive')
827 [CompletionResult]::new('--set', '--set', [CompletionResultType]::ParameterName, 'override options in config.toml')
828 [CompletionResult]::new('-v', '-v', [CompletionResultType]::ParameterName, 'use verbose output (-vv for very verbose)')
829 [CompletionResult]::new('--verbose', '--verbose', [CompletionResultType]::ParameterName, 'use verbose output (-vv for very verbose)')
830 [CompletionResult]::new('-i', '-i', [CompletionResultType]::ParameterName, 'use incremental compilation')
831 [CompletionResult]::new('--incremental', '--incremental', [CompletionResultType]::ParameterName, 'use incremental compilation')
832 [CompletionResult]::new('--include-default-paths', '--include-default-paths', [CompletionResultType]::ParameterName, 'include default paths in addition to the provided ones')
833 [CompletionResult]::new('--dry-run', '--dry-run', [CompletionResultType]::ParameterName, 'dry run; don''t build anything')
834 [CompletionResult]::new('--dump-bootstrap-shims', '--dump-bootstrap-shims', [CompletionResultType]::ParameterName, 'Indicates whether to dump the work done from bootstrap shims')
835 [CompletionResult]::new('--json-output', '--json-output', [CompletionResultType]::ParameterName, 'use message-format=json')
836 [CompletionResult]::new('--bypass-bootstrap-lock', '--bypass-bootstrap-lock', [CompletionResultType]::ParameterName, 'Bootstrap uses this value to decide whether it should bypass locking the build process. This is rarely needed (e.g., compiling the std library for different targets in parallel)')
837 [CompletionResult]::new('--llvm-profile-generate', '--llvm-profile-generate', [CompletionResultType]::ParameterName, 'generate PGO profile with llvm built for rustc')
838 [CompletionResult]::new('--enable-bolt-settings', '--enable-bolt-settings', [CompletionResultType]::ParameterName, 'Enable BOLT link flags')
839 [CompletionResult]::new('--skip-stage0-validation', '--skip-stage0-validation', [CompletionResultType]::ParameterName, 'Skip stage0 compiler validation')
840 [CompletionResult]::new('-h', '-h', [CompletionResultType]::ParameterName, 'Print help (see more with ''--help'')')
841 [CompletionResult]::new('--help', '--help', [CompletionResultType]::ParameterName, 'Print help (see more with ''--help'')')
842 break
843 }
844 'x;perf;samply' {
845 [CompletionResult]::new('--include', '--include', [CompletionResultType]::ParameterName, 'Select the benchmarks that you want to run (separated by commas). If unspecified, all benchmarks will be executed')
846 [CompletionResult]::new('--exclude', '--exclude', [CompletionResultType]::ParameterName, 'Select the benchmarks matching a prefix in this comma-separated list that you don''t want to run')
847 [CompletionResult]::new('--scenarios', '--scenarios', [CompletionResultType]::ParameterName, 'Select the scenarios that should be benchmarked')
848 [CompletionResult]::new('--profiles', '--profiles', [CompletionResultType]::ParameterName, 'Select the profiles that should be benchmarked')
849 [CompletionResult]::new('--config', '--config', [CompletionResultType]::ParameterName, 'TOML configuration file for build')
850 [CompletionResult]::new('--build-dir', '--build-dir', [CompletionResultType]::ParameterName, 'Build directory, overrides `build.build-dir` in `config.toml`')
851 [CompletionResult]::new('--build', '--build', [CompletionResultType]::ParameterName, 'build target of the stage0 compiler')
852 [CompletionResult]::new('--host', '--host', [CompletionResultType]::ParameterName, 'host targets to build')
853 [CompletionResult]::new('--target', '--target', [CompletionResultType]::ParameterName, 'target targets to build')
854 [CompletionResult]::new('--skip', '--skip', [CompletionResultType]::ParameterName, 'build paths to skip')
855 [CompletionResult]::new('--rustc-error-format', '--rustc-error-format', [CompletionResultType]::ParameterName, 'rustc-error-format')
856 [CompletionResult]::new('--on-fail', '--on-fail', [CompletionResultType]::ParameterName, 'command to run on failure')
857 [CompletionResult]::new('--stage', '--stage', [CompletionResultType]::ParameterName, 'stage to build (indicates compiler to use/test, e.g., stage 0 uses the bootstrap compiler, stage 1 the stage 0 rustc artifacts, etc.)')
858 [CompletionResult]::new('--keep-stage', '--keep-stage', [CompletionResultType]::ParameterName, 'stage(s) to keep without recompiling (pass multiple times to keep e.g., both stages 0 and 1)')
859 [CompletionResult]::new('--keep-stage-std', '--keep-stage-std', [CompletionResultType]::ParameterName, 'stage(s) of the standard library to keep without recompiling (pass multiple times to keep e.g., both stages 0 and 1)')
860 [CompletionResult]::new('--src', '--src', [CompletionResultType]::ParameterName, 'path to the root of the rust checkout')
861 [CompletionResult]::new('-j', '-j', [CompletionResultType]::ParameterName, 'number of jobs to run in parallel')
862 [CompletionResult]::new('--jobs', '--jobs', [CompletionResultType]::ParameterName, 'number of jobs to run in parallel')
863 [CompletionResult]::new('--warnings', '--warnings', [CompletionResultType]::ParameterName, 'if value is deny, will deny warnings if value is warn, will emit warnings otherwise, use the default configured behaviour')
864 [CompletionResult]::new('--error-format', '--error-format', [CompletionResultType]::ParameterName, 'rustc error format')
865 [CompletionResult]::new('--color', '--color', [CompletionResultType]::ParameterName, 'whether to use color in cargo and rustc output')
866 [CompletionResult]::new('--rust-profile-generate', '--rust-profile-generate', [CompletionResultType]::ParameterName, 'generate PGO profile with rustc build')
867 [CompletionResult]::new('--rust-profile-use', '--rust-profile-use', [CompletionResultType]::ParameterName, 'use PGO profile for rustc build')
868 [CompletionResult]::new('--llvm-profile-use', '--llvm-profile-use', [CompletionResultType]::ParameterName, 'use PGO profile for LLVM build')
869 [CompletionResult]::new('--reproducible-artifact', '--reproducible-artifact', [CompletionResultType]::ParameterName, 'Additional reproducible artifacts that should be added to the reproducible artifacts archive')
870 [CompletionResult]::new('--set', '--set', [CompletionResultType]::ParameterName, 'override options in config.toml')
871 [CompletionResult]::new('-v', '-v', [CompletionResultType]::ParameterName, 'use verbose output (-vv for very verbose)')
872 [CompletionResult]::new('--verbose', '--verbose', [CompletionResultType]::ParameterName, 'use verbose output (-vv for very verbose)')
873 [CompletionResult]::new('-i', '-i', [CompletionResultType]::ParameterName, 'use incremental compilation')
874 [CompletionResult]::new('--incremental', '--incremental', [CompletionResultType]::ParameterName, 'use incremental compilation')
875 [CompletionResult]::new('--include-default-paths', '--include-default-paths', [CompletionResultType]::ParameterName, 'include default paths in addition to the provided ones')
876 [CompletionResult]::new('--dry-run', '--dry-run', [CompletionResultType]::ParameterName, 'dry run; don''t build anything')
877 [CompletionResult]::new('--dump-bootstrap-shims', '--dump-bootstrap-shims', [CompletionResultType]::ParameterName, 'Indicates whether to dump the work done from bootstrap shims')
878 [CompletionResult]::new('--json-output', '--json-output', [CompletionResultType]::ParameterName, 'use message-format=json')
879 [CompletionResult]::new('--bypass-bootstrap-lock', '--bypass-bootstrap-lock', [CompletionResultType]::ParameterName, 'Bootstrap uses this value to decide whether it should bypass locking the build process. This is rarely needed (e.g., compiling the std library for different targets in parallel)')
880 [CompletionResult]::new('--llvm-profile-generate', '--llvm-profile-generate', [CompletionResultType]::ParameterName, 'generate PGO profile with llvm built for rustc')
881 [CompletionResult]::new('--enable-bolt-settings', '--enable-bolt-settings', [CompletionResultType]::ParameterName, 'Enable BOLT link flags')
882 [CompletionResult]::new('--skip-stage0-validation', '--skip-stage0-validation', [CompletionResultType]::ParameterName, 'Skip stage0 compiler validation')
883 [CompletionResult]::new('-h', '-h', [CompletionResultType]::ParameterName, 'Print help (see more with ''--help'')')
884 [CompletionResult]::new('--help', '--help', [CompletionResultType]::ParameterName, 'Print help (see more with ''--help'')')
885 break
886 }
887 'x;perf;cachegrind' {
888 [CompletionResult]::new('--include', '--include', [CompletionResultType]::ParameterName, 'Select the benchmarks that you want to run (separated by commas). If unspecified, all benchmarks will be executed')
889 [CompletionResult]::new('--exclude', '--exclude', [CompletionResultType]::ParameterName, 'Select the benchmarks matching a prefix in this comma-separated list that you don''t want to run')
890 [CompletionResult]::new('--scenarios', '--scenarios', [CompletionResultType]::ParameterName, 'Select the scenarios that should be benchmarked')
891 [CompletionResult]::new('--profiles', '--profiles', [CompletionResultType]::ParameterName, 'Select the profiles that should be benchmarked')
892 [CompletionResult]::new('--config', '--config', [CompletionResultType]::ParameterName, 'TOML configuration file for build')
893 [CompletionResult]::new('--build-dir', '--build-dir', [CompletionResultType]::ParameterName, 'Build directory, overrides `build.build-dir` in `config.toml`')
894 [CompletionResult]::new('--build', '--build', [CompletionResultType]::ParameterName, 'build target of the stage0 compiler')
895 [CompletionResult]::new('--host', '--host', [CompletionResultType]::ParameterName, 'host targets to build')
896 [CompletionResult]::new('--target', '--target', [CompletionResultType]::ParameterName, 'target targets to build')
897 [CompletionResult]::new('--skip', '--skip', [CompletionResultType]::ParameterName, 'build paths to skip')
898 [CompletionResult]::new('--rustc-error-format', '--rustc-error-format', [CompletionResultType]::ParameterName, 'rustc-error-format')
899 [CompletionResult]::new('--on-fail', '--on-fail', [CompletionResultType]::ParameterName, 'command to run on failure')
900 [CompletionResult]::new('--stage', '--stage', [CompletionResultType]::ParameterName, 'stage to build (indicates compiler to use/test, e.g., stage 0 uses the bootstrap compiler, stage 1 the stage 0 rustc artifacts, etc.)')
901 [CompletionResult]::new('--keep-stage', '--keep-stage', [CompletionResultType]::ParameterName, 'stage(s) to keep without recompiling (pass multiple times to keep e.g., both stages 0 and 1)')
902 [CompletionResult]::new('--keep-stage-std', '--keep-stage-std', [CompletionResultType]::ParameterName, 'stage(s) of the standard library to keep without recompiling (pass multiple times to keep e.g., both stages 0 and 1)')
903 [CompletionResult]::new('--src', '--src', [CompletionResultType]::ParameterName, 'path to the root of the rust checkout')
904 [CompletionResult]::new('-j', '-j', [CompletionResultType]::ParameterName, 'number of jobs to run in parallel')
905 [CompletionResult]::new('--jobs', '--jobs', [CompletionResultType]::ParameterName, 'number of jobs to run in parallel')
906 [CompletionResult]::new('--warnings', '--warnings', [CompletionResultType]::ParameterName, 'if value is deny, will deny warnings if value is warn, will emit warnings otherwise, use the default configured behaviour')
907 [CompletionResult]::new('--error-format', '--error-format', [CompletionResultType]::ParameterName, 'rustc error format')
908 [CompletionResult]::new('--color', '--color', [CompletionResultType]::ParameterName, 'whether to use color in cargo and rustc output')
909 [CompletionResult]::new('--rust-profile-generate', '--rust-profile-generate', [CompletionResultType]::ParameterName, 'generate PGO profile with rustc build')
910 [CompletionResult]::new('--rust-profile-use', '--rust-profile-use', [CompletionResultType]::ParameterName, 'use PGO profile for rustc build')
911 [CompletionResult]::new('--llvm-profile-use', '--llvm-profile-use', [CompletionResultType]::ParameterName, 'use PGO profile for LLVM build')
912 [CompletionResult]::new('--reproducible-artifact', '--reproducible-artifact', [CompletionResultType]::ParameterName, 'Additional reproducible artifacts that should be added to the reproducible artifacts archive')
913 [CompletionResult]::new('--set', '--set', [CompletionResultType]::ParameterName, 'override options in config.toml')
914 [CompletionResult]::new('-v', '-v', [CompletionResultType]::ParameterName, 'use verbose output (-vv for very verbose)')
915 [CompletionResult]::new('--verbose', '--verbose', [CompletionResultType]::ParameterName, 'use verbose output (-vv for very verbose)')
916 [CompletionResult]::new('-i', '-i', [CompletionResultType]::ParameterName, 'use incremental compilation')
917 [CompletionResult]::new('--incremental', '--incremental', [CompletionResultType]::ParameterName, 'use incremental compilation')
918 [CompletionResult]::new('--include-default-paths', '--include-default-paths', [CompletionResultType]::ParameterName, 'include default paths in addition to the provided ones')
919 [CompletionResult]::new('--dry-run', '--dry-run', [CompletionResultType]::ParameterName, 'dry run; don''t build anything')
920 [CompletionResult]::new('--dump-bootstrap-shims', '--dump-bootstrap-shims', [CompletionResultType]::ParameterName, 'Indicates whether to dump the work done from bootstrap shims')
921 [CompletionResult]::new('--json-output', '--json-output', [CompletionResultType]::ParameterName, 'use message-format=json')
922 [CompletionResult]::new('--bypass-bootstrap-lock', '--bypass-bootstrap-lock', [CompletionResultType]::ParameterName, 'Bootstrap uses this value to decide whether it should bypass locking the build process. This is rarely needed (e.g., compiling the std library for different targets in parallel)')
923 [CompletionResult]::new('--llvm-profile-generate', '--llvm-profile-generate', [CompletionResultType]::ParameterName, 'generate PGO profile with llvm built for rustc')
924 [CompletionResult]::new('--enable-bolt-settings', '--enable-bolt-settings', [CompletionResultType]::ParameterName, 'Enable BOLT link flags')
925 [CompletionResult]::new('--skip-stage0-validation', '--skip-stage0-validation', [CompletionResultType]::ParameterName, 'Skip stage0 compiler validation')
926 [CompletionResult]::new('-h', '-h', [CompletionResultType]::ParameterName, 'Print help (see more with ''--help'')')
927 [CompletionResult]::new('--help', '--help', [CompletionResultType]::ParameterName, 'Print help (see more with ''--help'')')
928 break
929 }
930 'x;perf;benchmark' {
931 [CompletionResult]::new('--include', '--include', [CompletionResultType]::ParameterName, 'Select the benchmarks that you want to run (separated by commas). If unspecified, all benchmarks will be executed')
932 [CompletionResult]::new('--exclude', '--exclude', [CompletionResultType]::ParameterName, 'Select the benchmarks matching a prefix in this comma-separated list that you don''t want to run')
933 [CompletionResult]::new('--scenarios', '--scenarios', [CompletionResultType]::ParameterName, 'Select the scenarios that should be benchmarked')
934 [CompletionResult]::new('--profiles', '--profiles', [CompletionResultType]::ParameterName, 'Select the profiles that should be benchmarked')
935 [CompletionResult]::new('--config', '--config', [CompletionResultType]::ParameterName, 'TOML configuration file for build')
936 [CompletionResult]::new('--build-dir', '--build-dir', [CompletionResultType]::ParameterName, 'Build directory, overrides `build.build-dir` in `config.toml`')
937 [CompletionResult]::new('--build', '--build', [CompletionResultType]::ParameterName, 'build target of the stage0 compiler')
938 [CompletionResult]::new('--host', '--host', [CompletionResultType]::ParameterName, 'host targets to build')
939 [CompletionResult]::new('--target', '--target', [CompletionResultType]::ParameterName, 'target targets to build')
940 [CompletionResult]::new('--skip', '--skip', [CompletionResultType]::ParameterName, 'build paths to skip')
941 [CompletionResult]::new('--rustc-error-format', '--rustc-error-format', [CompletionResultType]::ParameterName, 'rustc-error-format')
942 [CompletionResult]::new('--on-fail', '--on-fail', [CompletionResultType]::ParameterName, 'command to run on failure')
943 [CompletionResult]::new('--stage', '--stage', [CompletionResultType]::ParameterName, 'stage to build (indicates compiler to use/test, e.g., stage 0 uses the bootstrap compiler, stage 1 the stage 0 rustc artifacts, etc.)')
944 [CompletionResult]::new('--keep-stage', '--keep-stage', [CompletionResultType]::ParameterName, 'stage(s) to keep without recompiling (pass multiple times to keep e.g., both stages 0 and 1)')
945 [CompletionResult]::new('--keep-stage-std', '--keep-stage-std', [CompletionResultType]::ParameterName, 'stage(s) of the standard library to keep without recompiling (pass multiple times to keep e.g., both stages 0 and 1)')
946 [CompletionResult]::new('--src', '--src', [CompletionResultType]::ParameterName, 'path to the root of the rust checkout')
947 [CompletionResult]::new('-j', '-j', [CompletionResultType]::ParameterName, 'number of jobs to run in parallel')
948 [CompletionResult]::new('--jobs', '--jobs', [CompletionResultType]::ParameterName, 'number of jobs to run in parallel')
949 [CompletionResult]::new('--warnings', '--warnings', [CompletionResultType]::ParameterName, 'if value is deny, will deny warnings if value is warn, will emit warnings otherwise, use the default configured behaviour')
950 [CompletionResult]::new('--error-format', '--error-format', [CompletionResultType]::ParameterName, 'rustc error format')
951 [CompletionResult]::new('--color', '--color', [CompletionResultType]::ParameterName, 'whether to use color in cargo and rustc output')
952 [CompletionResult]::new('--rust-profile-generate', '--rust-profile-generate', [CompletionResultType]::ParameterName, 'generate PGO profile with rustc build')
953 [CompletionResult]::new('--rust-profile-use', '--rust-profile-use', [CompletionResultType]::ParameterName, 'use PGO profile for rustc build')
954 [CompletionResult]::new('--llvm-profile-use', '--llvm-profile-use', [CompletionResultType]::ParameterName, 'use PGO profile for LLVM build')
955 [CompletionResult]::new('--reproducible-artifact', '--reproducible-artifact', [CompletionResultType]::ParameterName, 'Additional reproducible artifacts that should be added to the reproducible artifacts archive')
956 [CompletionResult]::new('--set', '--set', [CompletionResultType]::ParameterName, 'override options in config.toml')
957 [CompletionResult]::new('-v', '-v', [CompletionResultType]::ParameterName, 'use verbose output (-vv for very verbose)')
958 [CompletionResult]::new('--verbose', '--verbose', [CompletionResultType]::ParameterName, 'use verbose output (-vv for very verbose)')
959 [CompletionResult]::new('-i', '-i', [CompletionResultType]::ParameterName, 'use incremental compilation')
960 [CompletionResult]::new('--incremental', '--incremental', [CompletionResultType]::ParameterName, 'use incremental compilation')
961 [CompletionResult]::new('--include-default-paths', '--include-default-paths', [CompletionResultType]::ParameterName, 'include default paths in addition to the provided ones')
962 [CompletionResult]::new('--dry-run', '--dry-run', [CompletionResultType]::ParameterName, 'dry run; don''t build anything')
963 [CompletionResult]::new('--dump-bootstrap-shims', '--dump-bootstrap-shims', [CompletionResultType]::ParameterName, 'Indicates whether to dump the work done from bootstrap shims')
964 [CompletionResult]::new('--json-output', '--json-output', [CompletionResultType]::ParameterName, 'use message-format=json')
965 [CompletionResult]::new('--bypass-bootstrap-lock', '--bypass-bootstrap-lock', [CompletionResultType]::ParameterName, 'Bootstrap uses this value to decide whether it should bypass locking the build process. This is rarely needed (e.g., compiling the std library for different targets in parallel)')
966 [CompletionResult]::new('--llvm-profile-generate', '--llvm-profile-generate', [CompletionResultType]::ParameterName, 'generate PGO profile with llvm built for rustc')
967 [CompletionResult]::new('--enable-bolt-settings', '--enable-bolt-settings', [CompletionResultType]::ParameterName, 'Enable BOLT link flags')
968 [CompletionResult]::new('--skip-stage0-validation', '--skip-stage0-validation', [CompletionResultType]::ParameterName, 'Skip stage0 compiler validation')
969 [CompletionResult]::new('-h', '-h', [CompletionResultType]::ParameterName, 'Print help (see more with ''--help'')')
970 [CompletionResult]::new('--help', '--help', [CompletionResultType]::ParameterName, 'Print help (see more with ''--help'')')
971 break
972 }
973 'x;perf;compare' {
757974 [CompletionResult]::new('--config', '--config', [CompletionResultType]::ParameterName, 'TOML configuration file for build')
758975 [CompletionResult]::new('--build-dir', '--build-dir', [CompletionResultType]::ParameterName, 'Build directory, overrides `build.build-dir` in `config.toml`')
759976 [CompletionResult]::new('--build', '--build', [CompletionResultType]::ParameterName, 'build target of the stage0 compiler')
src/etc/completions/x.py.fish+216-34
......@@ -73,7 +73,7 @@ complete -c x.py -n "__fish_x.py_needs_command" -a "run" -d 'Run tools contained
7373complete -c x.py -n "__fish_x.py_needs_command" -a "setup" -d 'Set up the environment for development'
7474complete -c x.py -n "__fish_x.py_needs_command" -a "suggest" -d 'Suggest a subset of tests to run, based on modified files'
7575complete -c x.py -n "__fish_x.py_needs_command" -a "vendor" -d 'Vendor dependencies'
76complete -c x.py -n "__fish_x.py_needs_command" -a "perf" -d 'Perform profiling and benchmarking of the compiler using the `rustc-perf-wrapper` tool'
76complete -c x.py -n "__fish_x.py_needs_command" -a "perf" -d 'Perform profiling and benchmarking of the compiler using `rustc-perf`'
7777complete -c x.py -n "__fish_x.py_using_subcommand build" -l config -d 'TOML configuration file for build' -r -F
7878complete -c x.py -n "__fish_x.py_using_subcommand build" -l build-dir -d 'Build directory, overrides `build.build-dir` in `config.toml`' -r -f -a "(__fish_complete_directories)"
7979complete -c x.py -n "__fish_x.py_using_subcommand build" -l build -d 'build target of the stage0 compiler' -r -f
......@@ -638,36 +638,218 @@ complete -c x.py -n "__fish_x.py_using_subcommand vendor" -l llvm-profile-genera
638638complete -c x.py -n "__fish_x.py_using_subcommand vendor" -l enable-bolt-settings -d 'Enable BOLT link flags'
639639complete -c x.py -n "__fish_x.py_using_subcommand vendor" -l skip-stage0-validation -d 'Skip stage0 compiler validation'
640640complete -c x.py -n "__fish_x.py_using_subcommand vendor" -s h -l help -d 'Print help (see more with \'--help\')'
641complete -c x.py -n "__fish_x.py_using_subcommand perf" -l config -d 'TOML configuration file for build' -r -F
642complete -c x.py -n "__fish_x.py_using_subcommand perf" -l build-dir -d 'Build directory, overrides `build.build-dir` in `config.toml`' -r -f -a "(__fish_complete_directories)"
643complete -c x.py -n "__fish_x.py_using_subcommand perf" -l build -d 'build target of the stage0 compiler' -r -f
644complete -c x.py -n "__fish_x.py_using_subcommand perf" -l host -d 'host targets to build' -r -f
645complete -c x.py -n "__fish_x.py_using_subcommand perf" -l target -d 'target targets to build' -r -f
646complete -c x.py -n "__fish_x.py_using_subcommand perf" -l exclude -d 'build paths to exclude' -r -F
647complete -c x.py -n "__fish_x.py_using_subcommand perf" -l skip -d 'build paths to skip' -r -F
648complete -c x.py -n "__fish_x.py_using_subcommand perf" -l rustc-error-format -r -f
649complete -c x.py -n "__fish_x.py_using_subcommand perf" -l on-fail -d 'command to run on failure' -r -f -a "(__fish_complete_command)"
650complete -c x.py -n "__fish_x.py_using_subcommand perf" -l stage -d 'stage to build (indicates compiler to use/test, e.g., stage 0 uses the bootstrap compiler, stage 1 the stage 0 rustc artifacts, etc.)' -r -f
651complete -c x.py -n "__fish_x.py_using_subcommand perf" -l keep-stage -d 'stage(s) to keep without recompiling (pass multiple times to keep e.g., both stages 0 and 1)' -r -f
652complete -c x.py -n "__fish_x.py_using_subcommand perf" -l keep-stage-std -d 'stage(s) of the standard library to keep without recompiling (pass multiple times to keep e.g., both stages 0 and 1)' -r -f
653complete -c x.py -n "__fish_x.py_using_subcommand perf" -l src -d 'path to the root of the rust checkout' -r -f -a "(__fish_complete_directories)"
654complete -c x.py -n "__fish_x.py_using_subcommand perf" -s j -l jobs -d 'number of jobs to run in parallel' -r -f
655complete -c x.py -n "__fish_x.py_using_subcommand perf" -l warnings -d 'if value is deny, will deny warnings if value is warn, will emit warnings otherwise, use the default configured behaviour' -r -f -a "{deny\t'',warn\t'',default\t''}"
656complete -c x.py -n "__fish_x.py_using_subcommand perf" -l error-format -d 'rustc error format' -r -f
657complete -c x.py -n "__fish_x.py_using_subcommand perf" -l color -d 'whether to use color in cargo and rustc output' -r -f -a "{always\t'',never\t'',auto\t''}"
658complete -c x.py -n "__fish_x.py_using_subcommand perf" -l rust-profile-generate -d 'generate PGO profile with rustc build' -r -F
659complete -c x.py -n "__fish_x.py_using_subcommand perf" -l rust-profile-use -d 'use PGO profile for rustc build' -r -F
660complete -c x.py -n "__fish_x.py_using_subcommand perf" -l llvm-profile-use -d 'use PGO profile for LLVM build' -r -F
661complete -c x.py -n "__fish_x.py_using_subcommand perf" -l reproducible-artifact -d 'Additional reproducible artifacts that should be added to the reproducible artifacts archive' -r
662complete -c x.py -n "__fish_x.py_using_subcommand perf" -l set -d 'override options in config.toml' -r -f
663complete -c x.py -n "__fish_x.py_using_subcommand perf" -s v -l verbose -d 'use verbose output (-vv for very verbose)'
664complete -c x.py -n "__fish_x.py_using_subcommand perf" -s i -l incremental -d 'use incremental compilation'
665complete -c x.py -n "__fish_x.py_using_subcommand perf" -l include-default-paths -d 'include default paths in addition to the provided ones'
666complete -c x.py -n "__fish_x.py_using_subcommand perf" -l dry-run -d 'dry run; don\'t build anything'
667complete -c x.py -n "__fish_x.py_using_subcommand perf" -l dump-bootstrap-shims -d 'Indicates whether to dump the work done from bootstrap shims'
668complete -c x.py -n "__fish_x.py_using_subcommand perf" -l json-output -d 'use message-format=json'
669complete -c x.py -n "__fish_x.py_using_subcommand perf" -l bypass-bootstrap-lock -d 'Bootstrap uses this value to decide whether it should bypass locking the build process. This is rarely needed (e.g., compiling the std library for different targets in parallel)'
670complete -c x.py -n "__fish_x.py_using_subcommand perf" -l llvm-profile-generate -d 'generate PGO profile with llvm built for rustc'
671complete -c x.py -n "__fish_x.py_using_subcommand perf" -l enable-bolt-settings -d 'Enable BOLT link flags'
672complete -c x.py -n "__fish_x.py_using_subcommand perf" -l skip-stage0-validation -d 'Skip stage0 compiler validation'
673complete -c x.py -n "__fish_x.py_using_subcommand perf" -s h -l help -d 'Print help (see more with \'--help\')'
641complete -c x.py -n "__fish_x.py_using_subcommand perf; and not __fish_seen_subcommand_from eprintln samply cachegrind benchmark compare" -l config -d 'TOML configuration file for build' -r -F
642complete -c x.py -n "__fish_x.py_using_subcommand perf; and not __fish_seen_subcommand_from eprintln samply cachegrind benchmark compare" -l build-dir -d 'Build directory, overrides `build.build-dir` in `config.toml`' -r -f -a "(__fish_complete_directories)"
643complete -c x.py -n "__fish_x.py_using_subcommand perf; and not __fish_seen_subcommand_from eprintln samply cachegrind benchmark compare" -l build -d 'build target of the stage0 compiler' -r -f
644complete -c x.py -n "__fish_x.py_using_subcommand perf; and not __fish_seen_subcommand_from eprintln samply cachegrind benchmark compare" -l host -d 'host targets to build' -r -f
645complete -c x.py -n "__fish_x.py_using_subcommand perf; and not __fish_seen_subcommand_from eprintln samply cachegrind benchmark compare" -l target -d 'target targets to build' -r -f
646complete -c x.py -n "__fish_x.py_using_subcommand perf; and not __fish_seen_subcommand_from eprintln samply cachegrind benchmark compare" -l exclude -d 'build paths to exclude' -r -F
647complete -c x.py -n "__fish_x.py_using_subcommand perf; and not __fish_seen_subcommand_from eprintln samply cachegrind benchmark compare" -l skip -d 'build paths to skip' -r -F
648complete -c x.py -n "__fish_x.py_using_subcommand perf; and not __fish_seen_subcommand_from eprintln samply cachegrind benchmark compare" -l rustc-error-format -r -f
649complete -c x.py -n "__fish_x.py_using_subcommand perf; and not __fish_seen_subcommand_from eprintln samply cachegrind benchmark compare" -l on-fail -d 'command to run on failure' -r -f -a "(__fish_complete_command)"
650complete -c x.py -n "__fish_x.py_using_subcommand perf; and not __fish_seen_subcommand_from eprintln samply cachegrind benchmark compare" -l stage -d 'stage to build (indicates compiler to use/test, e.g., stage 0 uses the bootstrap compiler, stage 1 the stage 0 rustc artifacts, etc.)' -r -f
651complete -c x.py -n "__fish_x.py_using_subcommand perf; and not __fish_seen_subcommand_from eprintln samply cachegrind benchmark compare" -l keep-stage -d 'stage(s) to keep without recompiling (pass multiple times to keep e.g., both stages 0 and 1)' -r -f
652complete -c x.py -n "__fish_x.py_using_subcommand perf; and not __fish_seen_subcommand_from eprintln samply cachegrind benchmark compare" -l keep-stage-std -d 'stage(s) of the standard library to keep without recompiling (pass multiple times to keep e.g., both stages 0 and 1)' -r -f
653complete -c x.py -n "__fish_x.py_using_subcommand perf; and not __fish_seen_subcommand_from eprintln samply cachegrind benchmark compare" -l src -d 'path to the root of the rust checkout' -r -f -a "(__fish_complete_directories)"
654complete -c x.py -n "__fish_x.py_using_subcommand perf; and not __fish_seen_subcommand_from eprintln samply cachegrind benchmark compare" -s j -l jobs -d 'number of jobs to run in parallel' -r -f
655complete -c x.py -n "__fish_x.py_using_subcommand perf; and not __fish_seen_subcommand_from eprintln samply cachegrind benchmark compare" -l warnings -d 'if value is deny, will deny warnings if value is warn, will emit warnings otherwise, use the default configured behaviour' -r -f -a "{deny\t'',warn\t'',default\t''}"
656complete -c x.py -n "__fish_x.py_using_subcommand perf; and not __fish_seen_subcommand_from eprintln samply cachegrind benchmark compare" -l error-format -d 'rustc error format' -r -f
657complete -c x.py -n "__fish_x.py_using_subcommand perf; and not __fish_seen_subcommand_from eprintln samply cachegrind benchmark compare" -l color -d 'whether to use color in cargo and rustc output' -r -f -a "{always\t'',never\t'',auto\t''}"
658complete -c x.py -n "__fish_x.py_using_subcommand perf; and not __fish_seen_subcommand_from eprintln samply cachegrind benchmark compare" -l rust-profile-generate -d 'generate PGO profile with rustc build' -r -F
659complete -c x.py -n "__fish_x.py_using_subcommand perf; and not __fish_seen_subcommand_from eprintln samply cachegrind benchmark compare" -l rust-profile-use -d 'use PGO profile for rustc build' -r -F
660complete -c x.py -n "__fish_x.py_using_subcommand perf; and not __fish_seen_subcommand_from eprintln samply cachegrind benchmark compare" -l llvm-profile-use -d 'use PGO profile for LLVM build' -r -F
661complete -c x.py -n "__fish_x.py_using_subcommand perf; and not __fish_seen_subcommand_from eprintln samply cachegrind benchmark compare" -l reproducible-artifact -d 'Additional reproducible artifacts that should be added to the reproducible artifacts archive' -r
662complete -c x.py -n "__fish_x.py_using_subcommand perf; and not __fish_seen_subcommand_from eprintln samply cachegrind benchmark compare" -l set -d 'override options in config.toml' -r -f
663complete -c x.py -n "__fish_x.py_using_subcommand perf; and not __fish_seen_subcommand_from eprintln samply cachegrind benchmark compare" -s v -l verbose -d 'use verbose output (-vv for very verbose)'
664complete -c x.py -n "__fish_x.py_using_subcommand perf; and not __fish_seen_subcommand_from eprintln samply cachegrind benchmark compare" -s i -l incremental -d 'use incremental compilation'
665complete -c x.py -n "__fish_x.py_using_subcommand perf; and not __fish_seen_subcommand_from eprintln samply cachegrind benchmark compare" -l include-default-paths -d 'include default paths in addition to the provided ones'
666complete -c x.py -n "__fish_x.py_using_subcommand perf; and not __fish_seen_subcommand_from eprintln samply cachegrind benchmark compare" -l dry-run -d 'dry run; don\'t build anything'
667complete -c x.py -n "__fish_x.py_using_subcommand perf; and not __fish_seen_subcommand_from eprintln samply cachegrind benchmark compare" -l dump-bootstrap-shims -d 'Indicates whether to dump the work done from bootstrap shims'
668complete -c x.py -n "__fish_x.py_using_subcommand perf; and not __fish_seen_subcommand_from eprintln samply cachegrind benchmark compare" -l json-output -d 'use message-format=json'
669complete -c x.py -n "__fish_x.py_using_subcommand perf; and not __fish_seen_subcommand_from eprintln samply cachegrind benchmark compare" -l bypass-bootstrap-lock -d 'Bootstrap uses this value to decide whether it should bypass locking the build process. This is rarely needed (e.g., compiling the std library for different targets in parallel)'
670complete -c x.py -n "__fish_x.py_using_subcommand perf; and not __fish_seen_subcommand_from eprintln samply cachegrind benchmark compare" -l llvm-profile-generate -d 'generate PGO profile with llvm built for rustc'
671complete -c x.py -n "__fish_x.py_using_subcommand perf; and not __fish_seen_subcommand_from eprintln samply cachegrind benchmark compare" -l enable-bolt-settings -d 'Enable BOLT link flags'
672complete -c x.py -n "__fish_x.py_using_subcommand perf; and not __fish_seen_subcommand_from eprintln samply cachegrind benchmark compare" -l skip-stage0-validation -d 'Skip stage0 compiler validation'
673complete -c x.py -n "__fish_x.py_using_subcommand perf; and not __fish_seen_subcommand_from eprintln samply cachegrind benchmark compare" -s h -l help -d 'Print help (see more with \'--help\')'
674complete -c x.py -n "__fish_x.py_using_subcommand perf; and not __fish_seen_subcommand_from eprintln samply cachegrind benchmark compare" -a "eprintln" -d 'Run `profile_local eprintln`. This executes the compiler on the given benchmarks and stores its stderr output'
675complete -c x.py -n "__fish_x.py_using_subcommand perf; and not __fish_seen_subcommand_from eprintln samply cachegrind benchmark compare" -a "samply" -d 'Run `profile_local samply` This executes the compiler on the given benchmarks and profiles it with `samply`. You need to install `samply`, e.g. using `cargo install samply`'
676complete -c x.py -n "__fish_x.py_using_subcommand perf; and not __fish_seen_subcommand_from eprintln samply cachegrind benchmark compare" -a "cachegrind" -d 'Run `profile_local cachegrind`. This executes the compiler on the given benchmarks under `Cachegrind`'
677complete -c x.py -n "__fish_x.py_using_subcommand perf; and not __fish_seen_subcommand_from eprintln samply cachegrind benchmark compare" -a "benchmark" -d 'Run compile benchmarks with a locally built compiler'
678complete -c x.py -n "__fish_x.py_using_subcommand perf; and not __fish_seen_subcommand_from eprintln samply cachegrind benchmark compare" -a "compare" -d 'Compare the results of two previously executed benchmark runs'
679complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from eprintln" -l include -d 'Select the benchmarks that you want to run (separated by commas). If unspecified, all benchmarks will be executed' -r
680complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from eprintln" -l exclude -d 'Select the benchmarks matching a prefix in this comma-separated list that you don\'t want to run' -r
681complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from eprintln" -l scenarios -d 'Select the scenarios that should be benchmarked' -r -f -a "{Full\t'',IncrFull\t'',IncrUnchanged\t'',IncrPatched\t''}"
682complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from eprintln" -l profiles -d 'Select the profiles that should be benchmarked' -r -f -a "{Check\t'',Debug\t'',Doc\t'',Opt\t'',Clippy\t''}"
683complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from eprintln" -l config -d 'TOML configuration file for build' -r -F
684complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from eprintln" -l build-dir -d 'Build directory, overrides `build.build-dir` in `config.toml`' -r -f -a "(__fish_complete_directories)"
685complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from eprintln" -l build -d 'build target of the stage0 compiler' -r -f
686complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from eprintln" -l host -d 'host targets to build' -r -f
687complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from eprintln" -l target -d 'target targets to build' -r -f
688complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from eprintln" -l skip -d 'build paths to skip' -r -F
689complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from eprintln" -l rustc-error-format -r -f
690complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from eprintln" -l on-fail -d 'command to run on failure' -r -f -a "(__fish_complete_command)"
691complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from eprintln" -l stage -d 'stage to build (indicates compiler to use/test, e.g., stage 0 uses the bootstrap compiler, stage 1 the stage 0 rustc artifacts, etc.)' -r -f
692complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from eprintln" -l keep-stage -d 'stage(s) to keep without recompiling (pass multiple times to keep e.g., both stages 0 and 1)' -r -f
693complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from eprintln" -l keep-stage-std -d 'stage(s) of the standard library to keep without recompiling (pass multiple times to keep e.g., both stages 0 and 1)' -r -f
694complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from eprintln" -l src -d 'path to the root of the rust checkout' -r -f -a "(__fish_complete_directories)"
695complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from eprintln" -s j -l jobs -d 'number of jobs to run in parallel' -r -f
696complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from eprintln" -l warnings -d 'if value is deny, will deny warnings if value is warn, will emit warnings otherwise, use the default configured behaviour' -r -f -a "{deny\t'',warn\t'',default\t''}"
697complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from eprintln" -l error-format -d 'rustc error format' -r -f
698complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from eprintln" -l color -d 'whether to use color in cargo and rustc output' -r -f -a "{always\t'',never\t'',auto\t''}"
699complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from eprintln" -l rust-profile-generate -d 'generate PGO profile with rustc build' -r -F
700complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from eprintln" -l rust-profile-use -d 'use PGO profile for rustc build' -r -F
701complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from eprintln" -l llvm-profile-use -d 'use PGO profile for LLVM build' -r -F
702complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from eprintln" -l reproducible-artifact -d 'Additional reproducible artifacts that should be added to the reproducible artifacts archive' -r
703complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from eprintln" -l set -d 'override options in config.toml' -r -f
704complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from eprintln" -s v -l verbose -d 'use verbose output (-vv for very verbose)'
705complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from eprintln" -s i -l incremental -d 'use incremental compilation'
706complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from eprintln" -l include-default-paths -d 'include default paths in addition to the provided ones'
707complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from eprintln" -l dry-run -d 'dry run; don\'t build anything'
708complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from eprintln" -l dump-bootstrap-shims -d 'Indicates whether to dump the work done from bootstrap shims'
709complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from eprintln" -l json-output -d 'use message-format=json'
710complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from eprintln" -l bypass-bootstrap-lock -d 'Bootstrap uses this value to decide whether it should bypass locking the build process. This is rarely needed (e.g., compiling the std library for different targets in parallel)'
711complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from eprintln" -l llvm-profile-generate -d 'generate PGO profile with llvm built for rustc'
712complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from eprintln" -l enable-bolt-settings -d 'Enable BOLT link flags'
713complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from eprintln" -l skip-stage0-validation -d 'Skip stage0 compiler validation'
714complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from eprintln" -s h -l help -d 'Print help (see more with \'--help\')'
715complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from samply" -l include -d 'Select the benchmarks that you want to run (separated by commas). If unspecified, all benchmarks will be executed' -r
716complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from samply" -l exclude -d 'Select the benchmarks matching a prefix in this comma-separated list that you don\'t want to run' -r
717complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from samply" -l scenarios -d 'Select the scenarios that should be benchmarked' -r -f -a "{Full\t'',IncrFull\t'',IncrUnchanged\t'',IncrPatched\t''}"
718complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from samply" -l profiles -d 'Select the profiles that should be benchmarked' -r -f -a "{Check\t'',Debug\t'',Doc\t'',Opt\t'',Clippy\t''}"
719complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from samply" -l config -d 'TOML configuration file for build' -r -F
720complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from samply" -l build-dir -d 'Build directory, overrides `build.build-dir` in `config.toml`' -r -f -a "(__fish_complete_directories)"
721complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from samply" -l build -d 'build target of the stage0 compiler' -r -f
722complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from samply" -l host -d 'host targets to build' -r -f
723complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from samply" -l target -d 'target targets to build' -r -f
724complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from samply" -l skip -d 'build paths to skip' -r -F
725complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from samply" -l rustc-error-format -r -f
726complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from samply" -l on-fail -d 'command to run on failure' -r -f -a "(__fish_complete_command)"
727complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from samply" -l stage -d 'stage to build (indicates compiler to use/test, e.g., stage 0 uses the bootstrap compiler, stage 1 the stage 0 rustc artifacts, etc.)' -r -f
728complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from samply" -l keep-stage -d 'stage(s) to keep without recompiling (pass multiple times to keep e.g., both stages 0 and 1)' -r -f
729complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from samply" -l keep-stage-std -d 'stage(s) of the standard library to keep without recompiling (pass multiple times to keep e.g., both stages 0 and 1)' -r -f
730complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from samply" -l src -d 'path to the root of the rust checkout' -r -f -a "(__fish_complete_directories)"
731complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from samply" -s j -l jobs -d 'number of jobs to run in parallel' -r -f
732complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from samply" -l warnings -d 'if value is deny, will deny warnings if value is warn, will emit warnings otherwise, use the default configured behaviour' -r -f -a "{deny\t'',warn\t'',default\t''}"
733complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from samply" -l error-format -d 'rustc error format' -r -f
734complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from samply" -l color -d 'whether to use color in cargo and rustc output' -r -f -a "{always\t'',never\t'',auto\t''}"
735complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from samply" -l rust-profile-generate -d 'generate PGO profile with rustc build' -r -F
736complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from samply" -l rust-profile-use -d 'use PGO profile for rustc build' -r -F
737complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from samply" -l llvm-profile-use -d 'use PGO profile for LLVM build' -r -F
738complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from samply" -l reproducible-artifact -d 'Additional reproducible artifacts that should be added to the reproducible artifacts archive' -r
739complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from samply" -l set -d 'override options in config.toml' -r -f
740complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from samply" -s v -l verbose -d 'use verbose output (-vv for very verbose)'
741complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from samply" -s i -l incremental -d 'use incremental compilation'
742complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from samply" -l include-default-paths -d 'include default paths in addition to the provided ones'
743complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from samply" -l dry-run -d 'dry run; don\'t build anything'
744complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from samply" -l dump-bootstrap-shims -d 'Indicates whether to dump the work done from bootstrap shims'
745complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from samply" -l json-output -d 'use message-format=json'
746complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from samply" -l bypass-bootstrap-lock -d 'Bootstrap uses this value to decide whether it should bypass locking the build process. This is rarely needed (e.g., compiling the std library for different targets in parallel)'
747complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from samply" -l llvm-profile-generate -d 'generate PGO profile with llvm built for rustc'
748complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from samply" -l enable-bolt-settings -d 'Enable BOLT link flags'
749complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from samply" -l skip-stage0-validation -d 'Skip stage0 compiler validation'
750complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from samply" -s h -l help -d 'Print help (see more with \'--help\')'
751complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from cachegrind" -l include -d 'Select the benchmarks that you want to run (separated by commas). If unspecified, all benchmarks will be executed' -r
752complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from cachegrind" -l exclude -d 'Select the benchmarks matching a prefix in this comma-separated list that you don\'t want to run' -r
753complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from cachegrind" -l scenarios -d 'Select the scenarios that should be benchmarked' -r -f -a "{Full\t'',IncrFull\t'',IncrUnchanged\t'',IncrPatched\t''}"
754complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from cachegrind" -l profiles -d 'Select the profiles that should be benchmarked' -r -f -a "{Check\t'',Debug\t'',Doc\t'',Opt\t'',Clippy\t''}"
755complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from cachegrind" -l config -d 'TOML configuration file for build' -r -F
756complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from cachegrind" -l build-dir -d 'Build directory, overrides `build.build-dir` in `config.toml`' -r -f -a "(__fish_complete_directories)"
757complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from cachegrind" -l build -d 'build target of the stage0 compiler' -r -f
758complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from cachegrind" -l host -d 'host targets to build' -r -f
759complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from cachegrind" -l target -d 'target targets to build' -r -f
760complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from cachegrind" -l skip -d 'build paths to skip' -r -F
761complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from cachegrind" -l rustc-error-format -r -f
762complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from cachegrind" -l on-fail -d 'command to run on failure' -r -f -a "(__fish_complete_command)"
763complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from cachegrind" -l stage -d 'stage to build (indicates compiler to use/test, e.g., stage 0 uses the bootstrap compiler, stage 1 the stage 0 rustc artifacts, etc.)' -r -f
764complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from cachegrind" -l keep-stage -d 'stage(s) to keep without recompiling (pass multiple times to keep e.g., both stages 0 and 1)' -r -f
765complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from cachegrind" -l keep-stage-std -d 'stage(s) of the standard library to keep without recompiling (pass multiple times to keep e.g., both stages 0 and 1)' -r -f
766complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from cachegrind" -l src -d 'path to the root of the rust checkout' -r -f -a "(__fish_complete_directories)"
767complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from cachegrind" -s j -l jobs -d 'number of jobs to run in parallel' -r -f
768complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from cachegrind" -l warnings -d 'if value is deny, will deny warnings if value is warn, will emit warnings otherwise, use the default configured behaviour' -r -f -a "{deny\t'',warn\t'',default\t''}"
769complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from cachegrind" -l error-format -d 'rustc error format' -r -f
770complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from cachegrind" -l color -d 'whether to use color in cargo and rustc output' -r -f -a "{always\t'',never\t'',auto\t''}"
771complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from cachegrind" -l rust-profile-generate -d 'generate PGO profile with rustc build' -r -F
772complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from cachegrind" -l rust-profile-use -d 'use PGO profile for rustc build' -r -F
773complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from cachegrind" -l llvm-profile-use -d 'use PGO profile for LLVM build' -r -F
774complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from cachegrind" -l reproducible-artifact -d 'Additional reproducible artifacts that should be added to the reproducible artifacts archive' -r
775complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from cachegrind" -l set -d 'override options in config.toml' -r -f
776complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from cachegrind" -s v -l verbose -d 'use verbose output (-vv for very verbose)'
777complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from cachegrind" -s i -l incremental -d 'use incremental compilation'
778complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from cachegrind" -l include-default-paths -d 'include default paths in addition to the provided ones'
779complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from cachegrind" -l dry-run -d 'dry run; don\'t build anything'
780complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from cachegrind" -l dump-bootstrap-shims -d 'Indicates whether to dump the work done from bootstrap shims'
781complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from cachegrind" -l json-output -d 'use message-format=json'
782complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from cachegrind" -l bypass-bootstrap-lock -d 'Bootstrap uses this value to decide whether it should bypass locking the build process. This is rarely needed (e.g., compiling the std library for different targets in parallel)'
783complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from cachegrind" -l llvm-profile-generate -d 'generate PGO profile with llvm built for rustc'
784complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from cachegrind" -l enable-bolt-settings -d 'Enable BOLT link flags'
785complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from cachegrind" -l skip-stage0-validation -d 'Skip stage0 compiler validation'
786complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from cachegrind" -s h -l help -d 'Print help (see more with \'--help\')'
787complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from benchmark" -l include -d 'Select the benchmarks that you want to run (separated by commas). If unspecified, all benchmarks will be executed' -r
788complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from benchmark" -l exclude -d 'Select the benchmarks matching a prefix in this comma-separated list that you don\'t want to run' -r
789complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from benchmark" -l scenarios -d 'Select the scenarios that should be benchmarked' -r -f -a "{Full\t'',IncrFull\t'',IncrUnchanged\t'',IncrPatched\t''}"
790complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from benchmark" -l profiles -d 'Select the profiles that should be benchmarked' -r -f -a "{Check\t'',Debug\t'',Doc\t'',Opt\t'',Clippy\t''}"
791complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from benchmark" -l config -d 'TOML configuration file for build' -r -F
792complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from benchmark" -l build-dir -d 'Build directory, overrides `build.build-dir` in `config.toml`' -r -f -a "(__fish_complete_directories)"
793complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from benchmark" -l build -d 'build target of the stage0 compiler' -r -f
794complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from benchmark" -l host -d 'host targets to build' -r -f
795complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from benchmark" -l target -d 'target targets to build' -r -f
796complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from benchmark" -l skip -d 'build paths to skip' -r -F
797complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from benchmark" -l rustc-error-format -r -f
798complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from benchmark" -l on-fail -d 'command to run on failure' -r -f -a "(__fish_complete_command)"
799complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from benchmark" -l stage -d 'stage to build (indicates compiler to use/test, e.g., stage 0 uses the bootstrap compiler, stage 1 the stage 0 rustc artifacts, etc.)' -r -f
800complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from benchmark" -l keep-stage -d 'stage(s) to keep without recompiling (pass multiple times to keep e.g., both stages 0 and 1)' -r -f
801complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from benchmark" -l keep-stage-std -d 'stage(s) of the standard library to keep without recompiling (pass multiple times to keep e.g., both stages 0 and 1)' -r -f
802complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from benchmark" -l src -d 'path to the root of the rust checkout' -r -f -a "(__fish_complete_directories)"
803complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from benchmark" -s j -l jobs -d 'number of jobs to run in parallel' -r -f
804complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from benchmark" -l warnings -d 'if value is deny, will deny warnings if value is warn, will emit warnings otherwise, use the default configured behaviour' -r -f -a "{deny\t'',warn\t'',default\t''}"
805complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from benchmark" -l error-format -d 'rustc error format' -r -f
806complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from benchmark" -l color -d 'whether to use color in cargo and rustc output' -r -f -a "{always\t'',never\t'',auto\t''}"
807complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from benchmark" -l rust-profile-generate -d 'generate PGO profile with rustc build' -r -F
808complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from benchmark" -l rust-profile-use -d 'use PGO profile for rustc build' -r -F
809complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from benchmark" -l llvm-profile-use -d 'use PGO profile for LLVM build' -r -F
810complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from benchmark" -l reproducible-artifact -d 'Additional reproducible artifacts that should be added to the reproducible artifacts archive' -r
811complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from benchmark" -l set -d 'override options in config.toml' -r -f
812complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from benchmark" -s v -l verbose -d 'use verbose output (-vv for very verbose)'
813complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from benchmark" -s i -l incremental -d 'use incremental compilation'
814complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from benchmark" -l include-default-paths -d 'include default paths in addition to the provided ones'
815complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from benchmark" -l dry-run -d 'dry run; don\'t build anything'
816complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from benchmark" -l dump-bootstrap-shims -d 'Indicates whether to dump the work done from bootstrap shims'
817complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from benchmark" -l json-output -d 'use message-format=json'
818complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from benchmark" -l bypass-bootstrap-lock -d 'Bootstrap uses this value to decide whether it should bypass locking the build process. This is rarely needed (e.g., compiling the std library for different targets in parallel)'
819complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from benchmark" -l llvm-profile-generate -d 'generate PGO profile with llvm built for rustc'
820complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from benchmark" -l enable-bolt-settings -d 'Enable BOLT link flags'
821complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from benchmark" -l skip-stage0-validation -d 'Skip stage0 compiler validation'
822complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from benchmark" -s h -l help -d 'Print help (see more with \'--help\')'
823complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from compare" -l config -d 'TOML configuration file for build' -r -F
824complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from compare" -l build-dir -d 'Build directory, overrides `build.build-dir` in `config.toml`' -r -f -a "(__fish_complete_directories)"
825complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from compare" -l build -d 'build target of the stage0 compiler' -r -f
826complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from compare" -l host -d 'host targets to build' -r -f
827complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from compare" -l target -d 'target targets to build' -r -f
828complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from compare" -l exclude -d 'build paths to exclude' -r -F
829complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from compare" -l skip -d 'build paths to skip' -r -F
830complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from compare" -l rustc-error-format -r -f
831complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from compare" -l on-fail -d 'command to run on failure' -r -f -a "(__fish_complete_command)"
832complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from compare" -l stage -d 'stage to build (indicates compiler to use/test, e.g., stage 0 uses the bootstrap compiler, stage 1 the stage 0 rustc artifacts, etc.)' -r -f
833complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from compare" -l keep-stage -d 'stage(s) to keep without recompiling (pass multiple times to keep e.g., both stages 0 and 1)' -r -f
834complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from compare" -l keep-stage-std -d 'stage(s) of the standard library to keep without recompiling (pass multiple times to keep e.g., both stages 0 and 1)' -r -f
835complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from compare" -l src -d 'path to the root of the rust checkout' -r -f -a "(__fish_complete_directories)"
836complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from compare" -s j -l jobs -d 'number of jobs to run in parallel' -r -f
837complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from compare" -l warnings -d 'if value is deny, will deny warnings if value is warn, will emit warnings otherwise, use the default configured behaviour' -r -f -a "{deny\t'',warn\t'',default\t''}"
838complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from compare" -l error-format -d 'rustc error format' -r -f
839complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from compare" -l color -d 'whether to use color in cargo and rustc output' -r -f -a "{always\t'',never\t'',auto\t''}"
840complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from compare" -l rust-profile-generate -d 'generate PGO profile with rustc build' -r -F
841complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from compare" -l rust-profile-use -d 'use PGO profile for rustc build' -r -F
842complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from compare" -l llvm-profile-use -d 'use PGO profile for LLVM build' -r -F
843complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from compare" -l reproducible-artifact -d 'Additional reproducible artifacts that should be added to the reproducible artifacts archive' -r
844complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from compare" -l set -d 'override options in config.toml' -r -f
845complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from compare" -s v -l verbose -d 'use verbose output (-vv for very verbose)'
846complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from compare" -s i -l incremental -d 'use incremental compilation'
847complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from compare" -l include-default-paths -d 'include default paths in addition to the provided ones'
848complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from compare" -l dry-run -d 'dry run; don\'t build anything'
849complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from compare" -l dump-bootstrap-shims -d 'Indicates whether to dump the work done from bootstrap shims'
850complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from compare" -l json-output -d 'use message-format=json'
851complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from compare" -l bypass-bootstrap-lock -d 'Bootstrap uses this value to decide whether it should bypass locking the build process. This is rarely needed (e.g., compiling the std library for different targets in parallel)'
852complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from compare" -l llvm-profile-generate -d 'generate PGO profile with llvm built for rustc'
853complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from compare" -l enable-bolt-settings -d 'Enable BOLT link flags'
854complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from compare" -l skip-stage0-validation -d 'Skip stage0 compiler validation'
855complete -c x.py -n "__fish_x.py_using_subcommand perf; and __fish_seen_subcommand_from compare" -s h -l help -d 'Print help (see more with \'--help\')'
src/etc/completions/x.py.ps1+218-1
......@@ -74,7 +74,7 @@ Register-ArgumentCompleter -Native -CommandName 'x.py' -ScriptBlock {
7474 [CompletionResult]::new('setup', 'setup', [CompletionResultType]::ParameterValue, 'Set up the environment for development')
7575 [CompletionResult]::new('suggest', 'suggest', [CompletionResultType]::ParameterValue, 'Suggest a subset of tests to run, based on modified files')
7676 [CompletionResult]::new('vendor', 'vendor', [CompletionResultType]::ParameterValue, 'Vendor dependencies')
77 [CompletionResult]::new('perf', 'perf', [CompletionResultType]::ParameterValue, 'Perform profiling and benchmarking of the compiler using the `rustc-perf-wrapper` tool')
77 [CompletionResult]::new('perf', 'perf', [CompletionResultType]::ParameterValue, 'Perform profiling and benchmarking of the compiler using `rustc-perf`')
7878 break
7979 }
8080 'x.py;build' {
......@@ -754,6 +754,223 @@ Register-ArgumentCompleter -Native -CommandName 'x.py' -ScriptBlock {
754754 break
755755 }
756756 'x.py;perf' {
757 [CompletionResult]::new('--config', '--config', [CompletionResultType]::ParameterName, 'TOML configuration file for build')
758 [CompletionResult]::new('--build-dir', '--build-dir', [CompletionResultType]::ParameterName, 'Build directory, overrides `build.build-dir` in `config.toml`')
759 [CompletionResult]::new('--build', '--build', [CompletionResultType]::ParameterName, 'build target of the stage0 compiler')
760 [CompletionResult]::new('--host', '--host', [CompletionResultType]::ParameterName, 'host targets to build')
761 [CompletionResult]::new('--target', '--target', [CompletionResultType]::ParameterName, 'target targets to build')
762 [CompletionResult]::new('--exclude', '--exclude', [CompletionResultType]::ParameterName, 'build paths to exclude')
763 [CompletionResult]::new('--skip', '--skip', [CompletionResultType]::ParameterName, 'build paths to skip')
764 [CompletionResult]::new('--rustc-error-format', '--rustc-error-format', [CompletionResultType]::ParameterName, 'rustc-error-format')
765 [CompletionResult]::new('--on-fail', '--on-fail', [CompletionResultType]::ParameterName, 'command to run on failure')
766 [CompletionResult]::new('--stage', '--stage', [CompletionResultType]::ParameterName, 'stage to build (indicates compiler to use/test, e.g., stage 0 uses the bootstrap compiler, stage 1 the stage 0 rustc artifacts, etc.)')
767 [CompletionResult]::new('--keep-stage', '--keep-stage', [CompletionResultType]::ParameterName, 'stage(s) to keep without recompiling (pass multiple times to keep e.g., both stages 0 and 1)')
768 [CompletionResult]::new('--keep-stage-std', '--keep-stage-std', [CompletionResultType]::ParameterName, 'stage(s) of the standard library to keep without recompiling (pass multiple times to keep e.g., both stages 0 and 1)')
769 [CompletionResult]::new('--src', '--src', [CompletionResultType]::ParameterName, 'path to the root of the rust checkout')
770 [CompletionResult]::new('-j', '-j', [CompletionResultType]::ParameterName, 'number of jobs to run in parallel')
771 [CompletionResult]::new('--jobs', '--jobs', [CompletionResultType]::ParameterName, 'number of jobs to run in parallel')
772 [CompletionResult]::new('--warnings', '--warnings', [CompletionResultType]::ParameterName, 'if value is deny, will deny warnings if value is warn, will emit warnings otherwise, use the default configured behaviour')
773 [CompletionResult]::new('--error-format', '--error-format', [CompletionResultType]::ParameterName, 'rustc error format')
774 [CompletionResult]::new('--color', '--color', [CompletionResultType]::ParameterName, 'whether to use color in cargo and rustc output')
775 [CompletionResult]::new('--rust-profile-generate', '--rust-profile-generate', [CompletionResultType]::ParameterName, 'generate PGO profile with rustc build')
776 [CompletionResult]::new('--rust-profile-use', '--rust-profile-use', [CompletionResultType]::ParameterName, 'use PGO profile for rustc build')
777 [CompletionResult]::new('--llvm-profile-use', '--llvm-profile-use', [CompletionResultType]::ParameterName, 'use PGO profile for LLVM build')
778 [CompletionResult]::new('--reproducible-artifact', '--reproducible-artifact', [CompletionResultType]::ParameterName, 'Additional reproducible artifacts that should be added to the reproducible artifacts archive')
779 [CompletionResult]::new('--set', '--set', [CompletionResultType]::ParameterName, 'override options in config.toml')
780 [CompletionResult]::new('-v', '-v', [CompletionResultType]::ParameterName, 'use verbose output (-vv for very verbose)')
781 [CompletionResult]::new('--verbose', '--verbose', [CompletionResultType]::ParameterName, 'use verbose output (-vv for very verbose)')
782 [CompletionResult]::new('-i', '-i', [CompletionResultType]::ParameterName, 'use incremental compilation')
783 [CompletionResult]::new('--incremental', '--incremental', [CompletionResultType]::ParameterName, 'use incremental compilation')
784 [CompletionResult]::new('--include-default-paths', '--include-default-paths', [CompletionResultType]::ParameterName, 'include default paths in addition to the provided ones')
785 [CompletionResult]::new('--dry-run', '--dry-run', [CompletionResultType]::ParameterName, 'dry run; don''t build anything')
786 [CompletionResult]::new('--dump-bootstrap-shims', '--dump-bootstrap-shims', [CompletionResultType]::ParameterName, 'Indicates whether to dump the work done from bootstrap shims')
787 [CompletionResult]::new('--json-output', '--json-output', [CompletionResultType]::ParameterName, 'use message-format=json')
788 [CompletionResult]::new('--bypass-bootstrap-lock', '--bypass-bootstrap-lock', [CompletionResultType]::ParameterName, 'Bootstrap uses this value to decide whether it should bypass locking the build process. This is rarely needed (e.g., compiling the std library for different targets in parallel)')
789 [CompletionResult]::new('--llvm-profile-generate', '--llvm-profile-generate', [CompletionResultType]::ParameterName, 'generate PGO profile with llvm built for rustc')
790 [CompletionResult]::new('--enable-bolt-settings', '--enable-bolt-settings', [CompletionResultType]::ParameterName, 'Enable BOLT link flags')
791 [CompletionResult]::new('--skip-stage0-validation', '--skip-stage0-validation', [CompletionResultType]::ParameterName, 'Skip stage0 compiler validation')
792 [CompletionResult]::new('-h', '-h', [CompletionResultType]::ParameterName, 'Print help (see more with ''--help'')')
793 [CompletionResult]::new('--help', '--help', [CompletionResultType]::ParameterName, 'Print help (see more with ''--help'')')
794 [CompletionResult]::new('eprintln', 'eprintln', [CompletionResultType]::ParameterValue, 'Run `profile_local eprintln`. This executes the compiler on the given benchmarks and stores its stderr output')
795 [CompletionResult]::new('samply', 'samply', [CompletionResultType]::ParameterValue, 'Run `profile_local samply` This executes the compiler on the given benchmarks and profiles it with `samply`. You need to install `samply`, e.g. using `cargo install samply`')
796 [CompletionResult]::new('cachegrind', 'cachegrind', [CompletionResultType]::ParameterValue, 'Run `profile_local cachegrind`. This executes the compiler on the given benchmarks under `Cachegrind`')
797 [CompletionResult]::new('benchmark', 'benchmark', [CompletionResultType]::ParameterValue, 'Run compile benchmarks with a locally built compiler')
798 [CompletionResult]::new('compare', 'compare', [CompletionResultType]::ParameterValue, 'Compare the results of two previously executed benchmark runs')
799 break
800 }
801 'x.py;perf;eprintln' {
802 [CompletionResult]::new('--include', '--include', [CompletionResultType]::ParameterName, 'Select the benchmarks that you want to run (separated by commas). If unspecified, all benchmarks will be executed')
803 [CompletionResult]::new('--exclude', '--exclude', [CompletionResultType]::ParameterName, 'Select the benchmarks matching a prefix in this comma-separated list that you don''t want to run')
804 [CompletionResult]::new('--scenarios', '--scenarios', [CompletionResultType]::ParameterName, 'Select the scenarios that should be benchmarked')
805 [CompletionResult]::new('--profiles', '--profiles', [CompletionResultType]::ParameterName, 'Select the profiles that should be benchmarked')
806 [CompletionResult]::new('--config', '--config', [CompletionResultType]::ParameterName, 'TOML configuration file for build')
807 [CompletionResult]::new('--build-dir', '--build-dir', [CompletionResultType]::ParameterName, 'Build directory, overrides `build.build-dir` in `config.toml`')
808 [CompletionResult]::new('--build', '--build', [CompletionResultType]::ParameterName, 'build target of the stage0 compiler')
809 [CompletionResult]::new('--host', '--host', [CompletionResultType]::ParameterName, 'host targets to build')
810 [CompletionResult]::new('--target', '--target', [CompletionResultType]::ParameterName, 'target targets to build')
811 [CompletionResult]::new('--skip', '--skip', [CompletionResultType]::ParameterName, 'build paths to skip')
812 [CompletionResult]::new('--rustc-error-format', '--rustc-error-format', [CompletionResultType]::ParameterName, 'rustc-error-format')
813 [CompletionResult]::new('--on-fail', '--on-fail', [CompletionResultType]::ParameterName, 'command to run on failure')
814 [CompletionResult]::new('--stage', '--stage', [CompletionResultType]::ParameterName, 'stage to build (indicates compiler to use/test, e.g., stage 0 uses the bootstrap compiler, stage 1 the stage 0 rustc artifacts, etc.)')
815 [CompletionResult]::new('--keep-stage', '--keep-stage', [CompletionResultType]::ParameterName, 'stage(s) to keep without recompiling (pass multiple times to keep e.g., both stages 0 and 1)')
816 [CompletionResult]::new('--keep-stage-std', '--keep-stage-std', [CompletionResultType]::ParameterName, 'stage(s) of the standard library to keep without recompiling (pass multiple times to keep e.g., both stages 0 and 1)')
817 [CompletionResult]::new('--src', '--src', [CompletionResultType]::ParameterName, 'path to the root of the rust checkout')
818 [CompletionResult]::new('-j', '-j', [CompletionResultType]::ParameterName, 'number of jobs to run in parallel')
819 [CompletionResult]::new('--jobs', '--jobs', [CompletionResultType]::ParameterName, 'number of jobs to run in parallel')
820 [CompletionResult]::new('--warnings', '--warnings', [CompletionResultType]::ParameterName, 'if value is deny, will deny warnings if value is warn, will emit warnings otherwise, use the default configured behaviour')
821 [CompletionResult]::new('--error-format', '--error-format', [CompletionResultType]::ParameterName, 'rustc error format')
822 [CompletionResult]::new('--color', '--color', [CompletionResultType]::ParameterName, 'whether to use color in cargo and rustc output')
823 [CompletionResult]::new('--rust-profile-generate', '--rust-profile-generate', [CompletionResultType]::ParameterName, 'generate PGO profile with rustc build')
824 [CompletionResult]::new('--rust-profile-use', '--rust-profile-use', [CompletionResultType]::ParameterName, 'use PGO profile for rustc build')
825 [CompletionResult]::new('--llvm-profile-use', '--llvm-profile-use', [CompletionResultType]::ParameterName, 'use PGO profile for LLVM build')
826 [CompletionResult]::new('--reproducible-artifact', '--reproducible-artifact', [CompletionResultType]::ParameterName, 'Additional reproducible artifacts that should be added to the reproducible artifacts archive')
827 [CompletionResult]::new('--set', '--set', [CompletionResultType]::ParameterName, 'override options in config.toml')
828 [CompletionResult]::new('-v', '-v', [CompletionResultType]::ParameterName, 'use verbose output (-vv for very verbose)')
829 [CompletionResult]::new('--verbose', '--verbose', [CompletionResultType]::ParameterName, 'use verbose output (-vv for very verbose)')
830 [CompletionResult]::new('-i', '-i', [CompletionResultType]::ParameterName, 'use incremental compilation')
831 [CompletionResult]::new('--incremental', '--incremental', [CompletionResultType]::ParameterName, 'use incremental compilation')
832 [CompletionResult]::new('--include-default-paths', '--include-default-paths', [CompletionResultType]::ParameterName, 'include default paths in addition to the provided ones')
833 [CompletionResult]::new('--dry-run', '--dry-run', [CompletionResultType]::ParameterName, 'dry run; don''t build anything')
834 [CompletionResult]::new('--dump-bootstrap-shims', '--dump-bootstrap-shims', [CompletionResultType]::ParameterName, 'Indicates whether to dump the work done from bootstrap shims')
835 [CompletionResult]::new('--json-output', '--json-output', [CompletionResultType]::ParameterName, 'use message-format=json')
836 [CompletionResult]::new('--bypass-bootstrap-lock', '--bypass-bootstrap-lock', [CompletionResultType]::ParameterName, 'Bootstrap uses this value to decide whether it should bypass locking the build process. This is rarely needed (e.g., compiling the std library for different targets in parallel)')
837 [CompletionResult]::new('--llvm-profile-generate', '--llvm-profile-generate', [CompletionResultType]::ParameterName, 'generate PGO profile with llvm built for rustc')
838 [CompletionResult]::new('--enable-bolt-settings', '--enable-bolt-settings', [CompletionResultType]::ParameterName, 'Enable BOLT link flags')
839 [CompletionResult]::new('--skip-stage0-validation', '--skip-stage0-validation', [CompletionResultType]::ParameterName, 'Skip stage0 compiler validation')
840 [CompletionResult]::new('-h', '-h', [CompletionResultType]::ParameterName, 'Print help (see more with ''--help'')')
841 [CompletionResult]::new('--help', '--help', [CompletionResultType]::ParameterName, 'Print help (see more with ''--help'')')
842 break
843 }
844 'x.py;perf;samply' {
845 [CompletionResult]::new('--include', '--include', [CompletionResultType]::ParameterName, 'Select the benchmarks that you want to run (separated by commas). If unspecified, all benchmarks will be executed')
846 [CompletionResult]::new('--exclude', '--exclude', [CompletionResultType]::ParameterName, 'Select the benchmarks matching a prefix in this comma-separated list that you don''t want to run')
847 [CompletionResult]::new('--scenarios', '--scenarios', [CompletionResultType]::ParameterName, 'Select the scenarios that should be benchmarked')
848 [CompletionResult]::new('--profiles', '--profiles', [CompletionResultType]::ParameterName, 'Select the profiles that should be benchmarked')
849 [CompletionResult]::new('--config', '--config', [CompletionResultType]::ParameterName, 'TOML configuration file for build')
850 [CompletionResult]::new('--build-dir', '--build-dir', [CompletionResultType]::ParameterName, 'Build directory, overrides `build.build-dir` in `config.toml`')
851 [CompletionResult]::new('--build', '--build', [CompletionResultType]::ParameterName, 'build target of the stage0 compiler')
852 [CompletionResult]::new('--host', '--host', [CompletionResultType]::ParameterName, 'host targets to build')
853 [CompletionResult]::new('--target', '--target', [CompletionResultType]::ParameterName, 'target targets to build')
854 [CompletionResult]::new('--skip', '--skip', [CompletionResultType]::ParameterName, 'build paths to skip')
855 [CompletionResult]::new('--rustc-error-format', '--rustc-error-format', [CompletionResultType]::ParameterName, 'rustc-error-format')
856 [CompletionResult]::new('--on-fail', '--on-fail', [CompletionResultType]::ParameterName, 'command to run on failure')
857 [CompletionResult]::new('--stage', '--stage', [CompletionResultType]::ParameterName, 'stage to build (indicates compiler to use/test, e.g., stage 0 uses the bootstrap compiler, stage 1 the stage 0 rustc artifacts, etc.)')
858 [CompletionResult]::new('--keep-stage', '--keep-stage', [CompletionResultType]::ParameterName, 'stage(s) to keep without recompiling (pass multiple times to keep e.g., both stages 0 and 1)')
859 [CompletionResult]::new('--keep-stage-std', '--keep-stage-std', [CompletionResultType]::ParameterName, 'stage(s) of the standard library to keep without recompiling (pass multiple times to keep e.g., both stages 0 and 1)')
860 [CompletionResult]::new('--src', '--src', [CompletionResultType]::ParameterName, 'path to the root of the rust checkout')
861 [CompletionResult]::new('-j', '-j', [CompletionResultType]::ParameterName, 'number of jobs to run in parallel')
862 [CompletionResult]::new('--jobs', '--jobs', [CompletionResultType]::ParameterName, 'number of jobs to run in parallel')
863 [CompletionResult]::new('--warnings', '--warnings', [CompletionResultType]::ParameterName, 'if value is deny, will deny warnings if value is warn, will emit warnings otherwise, use the default configured behaviour')
864 [CompletionResult]::new('--error-format', '--error-format', [CompletionResultType]::ParameterName, 'rustc error format')
865 [CompletionResult]::new('--color', '--color', [CompletionResultType]::ParameterName, 'whether to use color in cargo and rustc output')
866 [CompletionResult]::new('--rust-profile-generate', '--rust-profile-generate', [CompletionResultType]::ParameterName, 'generate PGO profile with rustc build')
867 [CompletionResult]::new('--rust-profile-use', '--rust-profile-use', [CompletionResultType]::ParameterName, 'use PGO profile for rustc build')
868 [CompletionResult]::new('--llvm-profile-use', '--llvm-profile-use', [CompletionResultType]::ParameterName, 'use PGO profile for LLVM build')
869 [CompletionResult]::new('--reproducible-artifact', '--reproducible-artifact', [CompletionResultType]::ParameterName, 'Additional reproducible artifacts that should be added to the reproducible artifacts archive')
870 [CompletionResult]::new('--set', '--set', [CompletionResultType]::ParameterName, 'override options in config.toml')
871 [CompletionResult]::new('-v', '-v', [CompletionResultType]::ParameterName, 'use verbose output (-vv for very verbose)')
872 [CompletionResult]::new('--verbose', '--verbose', [CompletionResultType]::ParameterName, 'use verbose output (-vv for very verbose)')
873 [CompletionResult]::new('-i', '-i', [CompletionResultType]::ParameterName, 'use incremental compilation')
874 [CompletionResult]::new('--incremental', '--incremental', [CompletionResultType]::ParameterName, 'use incremental compilation')
875 [CompletionResult]::new('--include-default-paths', '--include-default-paths', [CompletionResultType]::ParameterName, 'include default paths in addition to the provided ones')
876 [CompletionResult]::new('--dry-run', '--dry-run', [CompletionResultType]::ParameterName, 'dry run; don''t build anything')
877 [CompletionResult]::new('--dump-bootstrap-shims', '--dump-bootstrap-shims', [CompletionResultType]::ParameterName, 'Indicates whether to dump the work done from bootstrap shims')
878 [CompletionResult]::new('--json-output', '--json-output', [CompletionResultType]::ParameterName, 'use message-format=json')
879 [CompletionResult]::new('--bypass-bootstrap-lock', '--bypass-bootstrap-lock', [CompletionResultType]::ParameterName, 'Bootstrap uses this value to decide whether it should bypass locking the build process. This is rarely needed (e.g., compiling the std library for different targets in parallel)')
880 [CompletionResult]::new('--llvm-profile-generate', '--llvm-profile-generate', [CompletionResultType]::ParameterName, 'generate PGO profile with llvm built for rustc')
881 [CompletionResult]::new('--enable-bolt-settings', '--enable-bolt-settings', [CompletionResultType]::ParameterName, 'Enable BOLT link flags')
882 [CompletionResult]::new('--skip-stage0-validation', '--skip-stage0-validation', [CompletionResultType]::ParameterName, 'Skip stage0 compiler validation')
883 [CompletionResult]::new('-h', '-h', [CompletionResultType]::ParameterName, 'Print help (see more with ''--help'')')
884 [CompletionResult]::new('--help', '--help', [CompletionResultType]::ParameterName, 'Print help (see more with ''--help'')')
885 break
886 }
887 'x.py;perf;cachegrind' {
888 [CompletionResult]::new('--include', '--include', [CompletionResultType]::ParameterName, 'Select the benchmarks that you want to run (separated by commas). If unspecified, all benchmarks will be executed')
889 [CompletionResult]::new('--exclude', '--exclude', [CompletionResultType]::ParameterName, 'Select the benchmarks matching a prefix in this comma-separated list that you don''t want to run')
890 [CompletionResult]::new('--scenarios', '--scenarios', [CompletionResultType]::ParameterName, 'Select the scenarios that should be benchmarked')
891 [CompletionResult]::new('--profiles', '--profiles', [CompletionResultType]::ParameterName, 'Select the profiles that should be benchmarked')
892 [CompletionResult]::new('--config', '--config', [CompletionResultType]::ParameterName, 'TOML configuration file for build')
893 [CompletionResult]::new('--build-dir', '--build-dir', [CompletionResultType]::ParameterName, 'Build directory, overrides `build.build-dir` in `config.toml`')
894 [CompletionResult]::new('--build', '--build', [CompletionResultType]::ParameterName, 'build target of the stage0 compiler')
895 [CompletionResult]::new('--host', '--host', [CompletionResultType]::ParameterName, 'host targets to build')
896 [CompletionResult]::new('--target', '--target', [CompletionResultType]::ParameterName, 'target targets to build')
897 [CompletionResult]::new('--skip', '--skip', [CompletionResultType]::ParameterName, 'build paths to skip')
898 [CompletionResult]::new('--rustc-error-format', '--rustc-error-format', [CompletionResultType]::ParameterName, 'rustc-error-format')
899 [CompletionResult]::new('--on-fail', '--on-fail', [CompletionResultType]::ParameterName, 'command to run on failure')
900 [CompletionResult]::new('--stage', '--stage', [CompletionResultType]::ParameterName, 'stage to build (indicates compiler to use/test, e.g., stage 0 uses the bootstrap compiler, stage 1 the stage 0 rustc artifacts, etc.)')
901 [CompletionResult]::new('--keep-stage', '--keep-stage', [CompletionResultType]::ParameterName, 'stage(s) to keep without recompiling (pass multiple times to keep e.g., both stages 0 and 1)')
902 [CompletionResult]::new('--keep-stage-std', '--keep-stage-std', [CompletionResultType]::ParameterName, 'stage(s) of the standard library to keep without recompiling (pass multiple times to keep e.g., both stages 0 and 1)')
903 [CompletionResult]::new('--src', '--src', [CompletionResultType]::ParameterName, 'path to the root of the rust checkout')
904 [CompletionResult]::new('-j', '-j', [CompletionResultType]::ParameterName, 'number of jobs to run in parallel')
905 [CompletionResult]::new('--jobs', '--jobs', [CompletionResultType]::ParameterName, 'number of jobs to run in parallel')
906 [CompletionResult]::new('--warnings', '--warnings', [CompletionResultType]::ParameterName, 'if value is deny, will deny warnings if value is warn, will emit warnings otherwise, use the default configured behaviour')
907 [CompletionResult]::new('--error-format', '--error-format', [CompletionResultType]::ParameterName, 'rustc error format')
908 [CompletionResult]::new('--color', '--color', [CompletionResultType]::ParameterName, 'whether to use color in cargo and rustc output')
909 [CompletionResult]::new('--rust-profile-generate', '--rust-profile-generate', [CompletionResultType]::ParameterName, 'generate PGO profile with rustc build')
910 [CompletionResult]::new('--rust-profile-use', '--rust-profile-use', [CompletionResultType]::ParameterName, 'use PGO profile for rustc build')
911 [CompletionResult]::new('--llvm-profile-use', '--llvm-profile-use', [CompletionResultType]::ParameterName, 'use PGO profile for LLVM build')
912 [CompletionResult]::new('--reproducible-artifact', '--reproducible-artifact', [CompletionResultType]::ParameterName, 'Additional reproducible artifacts that should be added to the reproducible artifacts archive')
913 [CompletionResult]::new('--set', '--set', [CompletionResultType]::ParameterName, 'override options in config.toml')
914 [CompletionResult]::new('-v', '-v', [CompletionResultType]::ParameterName, 'use verbose output (-vv for very verbose)')
915 [CompletionResult]::new('--verbose', '--verbose', [CompletionResultType]::ParameterName, 'use verbose output (-vv for very verbose)')
916 [CompletionResult]::new('-i', '-i', [CompletionResultType]::ParameterName, 'use incremental compilation')
917 [CompletionResult]::new('--incremental', '--incremental', [CompletionResultType]::ParameterName, 'use incremental compilation')
918 [CompletionResult]::new('--include-default-paths', '--include-default-paths', [CompletionResultType]::ParameterName, 'include default paths in addition to the provided ones')
919 [CompletionResult]::new('--dry-run', '--dry-run', [CompletionResultType]::ParameterName, 'dry run; don''t build anything')
920 [CompletionResult]::new('--dump-bootstrap-shims', '--dump-bootstrap-shims', [CompletionResultType]::ParameterName, 'Indicates whether to dump the work done from bootstrap shims')
921 [CompletionResult]::new('--json-output', '--json-output', [CompletionResultType]::ParameterName, 'use message-format=json')
922 [CompletionResult]::new('--bypass-bootstrap-lock', '--bypass-bootstrap-lock', [CompletionResultType]::ParameterName, 'Bootstrap uses this value to decide whether it should bypass locking the build process. This is rarely needed (e.g., compiling the std library for different targets in parallel)')
923 [CompletionResult]::new('--llvm-profile-generate', '--llvm-profile-generate', [CompletionResultType]::ParameterName, 'generate PGO profile with llvm built for rustc')
924 [CompletionResult]::new('--enable-bolt-settings', '--enable-bolt-settings', [CompletionResultType]::ParameterName, 'Enable BOLT link flags')
925 [CompletionResult]::new('--skip-stage0-validation', '--skip-stage0-validation', [CompletionResultType]::ParameterName, 'Skip stage0 compiler validation')
926 [CompletionResult]::new('-h', '-h', [CompletionResultType]::ParameterName, 'Print help (see more with ''--help'')')
927 [CompletionResult]::new('--help', '--help', [CompletionResultType]::ParameterName, 'Print help (see more with ''--help'')')
928 break
929 }
930 'x.py;perf;benchmark' {
931 [CompletionResult]::new('--include', '--include', [CompletionResultType]::ParameterName, 'Select the benchmarks that you want to run (separated by commas). If unspecified, all benchmarks will be executed')
932 [CompletionResult]::new('--exclude', '--exclude', [CompletionResultType]::ParameterName, 'Select the benchmarks matching a prefix in this comma-separated list that you don''t want to run')
933 [CompletionResult]::new('--scenarios', '--scenarios', [CompletionResultType]::ParameterName, 'Select the scenarios that should be benchmarked')
934 [CompletionResult]::new('--profiles', '--profiles', [CompletionResultType]::ParameterName, 'Select the profiles that should be benchmarked')
935 [CompletionResult]::new('--config', '--config', [CompletionResultType]::ParameterName, 'TOML configuration file for build')
936 [CompletionResult]::new('--build-dir', '--build-dir', [CompletionResultType]::ParameterName, 'Build directory, overrides `build.build-dir` in `config.toml`')
937 [CompletionResult]::new('--build', '--build', [CompletionResultType]::ParameterName, 'build target of the stage0 compiler')
938 [CompletionResult]::new('--host', '--host', [CompletionResultType]::ParameterName, 'host targets to build')
939 [CompletionResult]::new('--target', '--target', [CompletionResultType]::ParameterName, 'target targets to build')
940 [CompletionResult]::new('--skip', '--skip', [CompletionResultType]::ParameterName, 'build paths to skip')
941 [CompletionResult]::new('--rustc-error-format', '--rustc-error-format', [CompletionResultType]::ParameterName, 'rustc-error-format')
942 [CompletionResult]::new('--on-fail', '--on-fail', [CompletionResultType]::ParameterName, 'command to run on failure')
943 [CompletionResult]::new('--stage', '--stage', [CompletionResultType]::ParameterName, 'stage to build (indicates compiler to use/test, e.g., stage 0 uses the bootstrap compiler, stage 1 the stage 0 rustc artifacts, etc.)')
944 [CompletionResult]::new('--keep-stage', '--keep-stage', [CompletionResultType]::ParameterName, 'stage(s) to keep without recompiling (pass multiple times to keep e.g., both stages 0 and 1)')
945 [CompletionResult]::new('--keep-stage-std', '--keep-stage-std', [CompletionResultType]::ParameterName, 'stage(s) of the standard library to keep without recompiling (pass multiple times to keep e.g., both stages 0 and 1)')
946 [CompletionResult]::new('--src', '--src', [CompletionResultType]::ParameterName, 'path to the root of the rust checkout')
947 [CompletionResult]::new('-j', '-j', [CompletionResultType]::ParameterName, 'number of jobs to run in parallel')
948 [CompletionResult]::new('--jobs', '--jobs', [CompletionResultType]::ParameterName, 'number of jobs to run in parallel')
949 [CompletionResult]::new('--warnings', '--warnings', [CompletionResultType]::ParameterName, 'if value is deny, will deny warnings if value is warn, will emit warnings otherwise, use the default configured behaviour')
950 [CompletionResult]::new('--error-format', '--error-format', [CompletionResultType]::ParameterName, 'rustc error format')
951 [CompletionResult]::new('--color', '--color', [CompletionResultType]::ParameterName, 'whether to use color in cargo and rustc output')
952 [CompletionResult]::new('--rust-profile-generate', '--rust-profile-generate', [CompletionResultType]::ParameterName, 'generate PGO profile with rustc build')
953 [CompletionResult]::new('--rust-profile-use', '--rust-profile-use', [CompletionResultType]::ParameterName, 'use PGO profile for rustc build')
954 [CompletionResult]::new('--llvm-profile-use', '--llvm-profile-use', [CompletionResultType]::ParameterName, 'use PGO profile for LLVM build')
955 [CompletionResult]::new('--reproducible-artifact', '--reproducible-artifact', [CompletionResultType]::ParameterName, 'Additional reproducible artifacts that should be added to the reproducible artifacts archive')
956 [CompletionResult]::new('--set', '--set', [CompletionResultType]::ParameterName, 'override options in config.toml')
957 [CompletionResult]::new('-v', '-v', [CompletionResultType]::ParameterName, 'use verbose output (-vv for very verbose)')
958 [CompletionResult]::new('--verbose', '--verbose', [CompletionResultType]::ParameterName, 'use verbose output (-vv for very verbose)')
959 [CompletionResult]::new('-i', '-i', [CompletionResultType]::ParameterName, 'use incremental compilation')
960 [CompletionResult]::new('--incremental', '--incremental', [CompletionResultType]::ParameterName, 'use incremental compilation')
961 [CompletionResult]::new('--include-default-paths', '--include-default-paths', [CompletionResultType]::ParameterName, 'include default paths in addition to the provided ones')
962 [CompletionResult]::new('--dry-run', '--dry-run', [CompletionResultType]::ParameterName, 'dry run; don''t build anything')
963 [CompletionResult]::new('--dump-bootstrap-shims', '--dump-bootstrap-shims', [CompletionResultType]::ParameterName, 'Indicates whether to dump the work done from bootstrap shims')
964 [CompletionResult]::new('--json-output', '--json-output', [CompletionResultType]::ParameterName, 'use message-format=json')
965 [CompletionResult]::new('--bypass-bootstrap-lock', '--bypass-bootstrap-lock', [CompletionResultType]::ParameterName, 'Bootstrap uses this value to decide whether it should bypass locking the build process. This is rarely needed (e.g., compiling the std library for different targets in parallel)')
966 [CompletionResult]::new('--llvm-profile-generate', '--llvm-profile-generate', [CompletionResultType]::ParameterName, 'generate PGO profile with llvm built for rustc')
967 [CompletionResult]::new('--enable-bolt-settings', '--enable-bolt-settings', [CompletionResultType]::ParameterName, 'Enable BOLT link flags')
968 [CompletionResult]::new('--skip-stage0-validation', '--skip-stage0-validation', [CompletionResultType]::ParameterName, 'Skip stage0 compiler validation')
969 [CompletionResult]::new('-h', '-h', [CompletionResultType]::ParameterName, 'Print help (see more with ''--help'')')
970 [CompletionResult]::new('--help', '--help', [CompletionResultType]::ParameterName, 'Print help (see more with ''--help'')')
971 break
972 }
973 'x.py;perf;compare' {
757974 [CompletionResult]::new('--config', '--config', [CompletionResultType]::ParameterName, 'TOML configuration file for build')
758975 [CompletionResult]::new('--build-dir', '--build-dir', [CompletionResultType]::ParameterName, 'Build directory, overrides `build.build-dir` in `config.toml`')
759976 [CompletionResult]::new('--build', '--build', [CompletionResultType]::ParameterName, 'build target of the stage0 compiler')
src/etc/completions/x.py.sh+1009-1
......@@ -63,6 +63,21 @@ _x.py() {
6363 x.py,vendor)
6464 cmd="x.py__vendor"
6565 ;;
66 x.py__perf,benchmark)
67 cmd="x.py__perf__benchmark"
68 ;;
69 x.py__perf,cachegrind)
70 cmd="x.py__perf__cachegrind"
71 ;;
72 x.py__perf,compare)
73 cmd="x.py__perf__compare"
74 ;;
75 x.py__perf,eprintln)
76 cmd="x.py__perf__eprintln"
77 ;;
78 x.py__perf,samply)
79 cmd="x.py__perf__samply"
80 ;;
6681 *)
6782 ;;
6883 esac
......@@ -2359,7 +2374,7 @@ _x.py() {
23592374 return 0
23602375 ;;
23612376 x.py__perf)
2362 opts="-v -i -j -h --verbose --incremental --config --build-dir --build --host --target --exclude --skip --include-default-paths --rustc-error-format --on-fail --dry-run --dump-bootstrap-shims --stage --keep-stage --keep-stage-std --src --jobs --warnings --error-format --json-output --color --bypass-bootstrap-lock --rust-profile-generate --rust-profile-use --llvm-profile-use --llvm-profile-generate --enable-bolt-settings --skip-stage0-validation --reproducible-artifact --set --help [PATHS]... [ARGS]..."
2377 opts="-v -i -j -h --verbose --incremental --config --build-dir --build --host --target --exclude --skip --include-default-paths --rustc-error-format --on-fail --dry-run --dump-bootstrap-shims --stage --keep-stage --keep-stage-std --src --jobs --warnings --error-format --json-output --color --bypass-bootstrap-lock --rust-profile-generate --rust-profile-use --llvm-profile-use --llvm-profile-generate --enable-bolt-settings --skip-stage0-validation --reproducible-artifact --set --help [PATHS]... [ARGS]... eprintln samply cachegrind benchmark compare"
23632378 if [[ ${cur} == -* || ${COMP_CWORD} -eq 2 ]] ; then
23642379 COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
23652380 return 0
......@@ -2547,6 +2562,999 @@ _x.py() {
25472562 COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
25482563 return 0
25492564 ;;
2565 x.py__perf__benchmark)
2566 opts="-v -i -j -h --include --exclude --scenarios --profiles --verbose --incremental --config --build-dir --build --host --target --skip --include-default-paths --rustc-error-format --on-fail --dry-run --dump-bootstrap-shims --stage --keep-stage --keep-stage-std --src --jobs --warnings --error-format --json-output --color --bypass-bootstrap-lock --rust-profile-generate --rust-profile-use --llvm-profile-use --llvm-profile-generate --enable-bolt-settings --skip-stage0-validation --reproducible-artifact --set --help <benchmark-id> [PATHS]... [ARGS]..."
2567 if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then
2568 COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
2569 return 0
2570 fi
2571 case "${prev}" in
2572 --include)
2573 COMPREPLY=($(compgen -f "${cur}"))
2574 return 0
2575 ;;
2576 --exclude)
2577 COMPREPLY=($(compgen -f "${cur}"))
2578 return 0
2579 ;;
2580 --scenarios)
2581 COMPREPLY=($(compgen -W "Full IncrFull IncrUnchanged IncrPatched" -- "${cur}"))
2582 return 0
2583 ;;
2584 --profiles)
2585 COMPREPLY=($(compgen -W "Check Debug Doc Opt Clippy" -- "${cur}"))
2586 return 0
2587 ;;
2588 --config)
2589 local oldifs
2590 if [ -n "${IFS+x}" ]; then
2591 oldifs="$IFS"
2592 fi
2593 IFS=$'\n'
2594 COMPREPLY=($(compgen -f "${cur}"))
2595 if [ -n "${oldifs+x}" ]; then
2596 IFS="$oldifs"
2597 fi
2598 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
2599 compopt -o filenames
2600 fi
2601 return 0
2602 ;;
2603 --build-dir)
2604 COMPREPLY=()
2605 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
2606 compopt -o plusdirs
2607 fi
2608 return 0
2609 ;;
2610 --build)
2611 COMPREPLY=("${cur}")
2612 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
2613 compopt -o nospace
2614 fi
2615 return 0
2616 ;;
2617 --host)
2618 COMPREPLY=("${cur}")
2619 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
2620 compopt -o nospace
2621 fi
2622 return 0
2623 ;;
2624 --target)
2625 COMPREPLY=("${cur}")
2626 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
2627 compopt -o nospace
2628 fi
2629 return 0
2630 ;;
2631 --skip)
2632 COMPREPLY=($(compgen -f "${cur}"))
2633 return 0
2634 ;;
2635 --rustc-error-format)
2636 COMPREPLY=("${cur}")
2637 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
2638 compopt -o nospace
2639 fi
2640 return 0
2641 ;;
2642 --on-fail)
2643 COMPREPLY=($(compgen -f "${cur}"))
2644 return 0
2645 ;;
2646 --stage)
2647 COMPREPLY=("${cur}")
2648 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
2649 compopt -o nospace
2650 fi
2651 return 0
2652 ;;
2653 --keep-stage)
2654 COMPREPLY=("${cur}")
2655 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
2656 compopt -o nospace
2657 fi
2658 return 0
2659 ;;
2660 --keep-stage-std)
2661 COMPREPLY=("${cur}")
2662 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
2663 compopt -o nospace
2664 fi
2665 return 0
2666 ;;
2667 --src)
2668 COMPREPLY=()
2669 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
2670 compopt -o plusdirs
2671 fi
2672 return 0
2673 ;;
2674 --jobs)
2675 COMPREPLY=("${cur}")
2676 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
2677 compopt -o nospace
2678 fi
2679 return 0
2680 ;;
2681 -j)
2682 COMPREPLY=("${cur}")
2683 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
2684 compopt -o nospace
2685 fi
2686 return 0
2687 ;;
2688 --warnings)
2689 COMPREPLY=($(compgen -W "deny warn default" -- "${cur}"))
2690 return 0
2691 ;;
2692 --error-format)
2693 COMPREPLY=("${cur}")
2694 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
2695 compopt -o nospace
2696 fi
2697 return 0
2698 ;;
2699 --color)
2700 COMPREPLY=($(compgen -W "always never auto" -- "${cur}"))
2701 return 0
2702 ;;
2703 --rust-profile-generate)
2704 local oldifs
2705 if [ -n "${IFS+x}" ]; then
2706 oldifs="$IFS"
2707 fi
2708 IFS=$'\n'
2709 COMPREPLY=($(compgen -f "${cur}"))
2710 if [ -n "${oldifs+x}" ]; then
2711 IFS="$oldifs"
2712 fi
2713 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
2714 compopt -o filenames
2715 fi
2716 return 0
2717 ;;
2718 --rust-profile-use)
2719 local oldifs
2720 if [ -n "${IFS+x}" ]; then
2721 oldifs="$IFS"
2722 fi
2723 IFS=$'\n'
2724 COMPREPLY=($(compgen -f "${cur}"))
2725 if [ -n "${oldifs+x}" ]; then
2726 IFS="$oldifs"
2727 fi
2728 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
2729 compopt -o filenames
2730 fi
2731 return 0
2732 ;;
2733 --llvm-profile-use)
2734 local oldifs
2735 if [ -n "${IFS+x}" ]; then
2736 oldifs="$IFS"
2737 fi
2738 IFS=$'\n'
2739 COMPREPLY=($(compgen -f "${cur}"))
2740 if [ -n "${oldifs+x}" ]; then
2741 IFS="$oldifs"
2742 fi
2743 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
2744 compopt -o filenames
2745 fi
2746 return 0
2747 ;;
2748 --reproducible-artifact)
2749 COMPREPLY=($(compgen -f "${cur}"))
2750 return 0
2751 ;;
2752 --set)
2753 COMPREPLY=("${cur}")
2754 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
2755 compopt -o nospace
2756 fi
2757 return 0
2758 ;;
2759 *)
2760 COMPREPLY=()
2761 ;;
2762 esac
2763 COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
2764 return 0
2765 ;;
2766 x.py__perf__cachegrind)
2767 opts="-v -i -j -h --include --exclude --scenarios --profiles --verbose --incremental --config --build-dir --build --host --target --skip --include-default-paths --rustc-error-format --on-fail --dry-run --dump-bootstrap-shims --stage --keep-stage --keep-stage-std --src --jobs --warnings --error-format --json-output --color --bypass-bootstrap-lock --rust-profile-generate --rust-profile-use --llvm-profile-use --llvm-profile-generate --enable-bolt-settings --skip-stage0-validation --reproducible-artifact --set --help [PATHS]... [ARGS]..."
2768 if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then
2769 COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
2770 return 0
2771 fi
2772 case "${prev}" in
2773 --include)
2774 COMPREPLY=($(compgen -f "${cur}"))
2775 return 0
2776 ;;
2777 --exclude)
2778 COMPREPLY=($(compgen -f "${cur}"))
2779 return 0
2780 ;;
2781 --scenarios)
2782 COMPREPLY=($(compgen -W "Full IncrFull IncrUnchanged IncrPatched" -- "${cur}"))
2783 return 0
2784 ;;
2785 --profiles)
2786 COMPREPLY=($(compgen -W "Check Debug Doc Opt Clippy" -- "${cur}"))
2787 return 0
2788 ;;
2789 --config)
2790 local oldifs
2791 if [ -n "${IFS+x}" ]; then
2792 oldifs="$IFS"
2793 fi
2794 IFS=$'\n'
2795 COMPREPLY=($(compgen -f "${cur}"))
2796 if [ -n "${oldifs+x}" ]; then
2797 IFS="$oldifs"
2798 fi
2799 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
2800 compopt -o filenames
2801 fi
2802 return 0
2803 ;;
2804 --build-dir)
2805 COMPREPLY=()
2806 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
2807 compopt -o plusdirs
2808 fi
2809 return 0
2810 ;;
2811 --build)
2812 COMPREPLY=("${cur}")
2813 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
2814 compopt -o nospace
2815 fi
2816 return 0
2817 ;;
2818 --host)
2819 COMPREPLY=("${cur}")
2820 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
2821 compopt -o nospace
2822 fi
2823 return 0
2824 ;;
2825 --target)
2826 COMPREPLY=("${cur}")
2827 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
2828 compopt -o nospace
2829 fi
2830 return 0
2831 ;;
2832 --skip)
2833 COMPREPLY=($(compgen -f "${cur}"))
2834 return 0
2835 ;;
2836 --rustc-error-format)
2837 COMPREPLY=("${cur}")
2838 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
2839 compopt -o nospace
2840 fi
2841 return 0
2842 ;;
2843 --on-fail)
2844 COMPREPLY=($(compgen -f "${cur}"))
2845 return 0
2846 ;;
2847 --stage)
2848 COMPREPLY=("${cur}")
2849 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
2850 compopt -o nospace
2851 fi
2852 return 0
2853 ;;
2854 --keep-stage)
2855 COMPREPLY=("${cur}")
2856 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
2857 compopt -o nospace
2858 fi
2859 return 0
2860 ;;
2861 --keep-stage-std)
2862 COMPREPLY=("${cur}")
2863 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
2864 compopt -o nospace
2865 fi
2866 return 0
2867 ;;
2868 --src)
2869 COMPREPLY=()
2870 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
2871 compopt -o plusdirs
2872 fi
2873 return 0
2874 ;;
2875 --jobs)
2876 COMPREPLY=("${cur}")
2877 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
2878 compopt -o nospace
2879 fi
2880 return 0
2881 ;;
2882 -j)
2883 COMPREPLY=("${cur}")
2884 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
2885 compopt -o nospace
2886 fi
2887 return 0
2888 ;;
2889 --warnings)
2890 COMPREPLY=($(compgen -W "deny warn default" -- "${cur}"))
2891 return 0
2892 ;;
2893 --error-format)
2894 COMPREPLY=("${cur}")
2895 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
2896 compopt -o nospace
2897 fi
2898 return 0
2899 ;;
2900 --color)
2901 COMPREPLY=($(compgen -W "always never auto" -- "${cur}"))
2902 return 0
2903 ;;
2904 --rust-profile-generate)
2905 local oldifs
2906 if [ -n "${IFS+x}" ]; then
2907 oldifs="$IFS"
2908 fi
2909 IFS=$'\n'
2910 COMPREPLY=($(compgen -f "${cur}"))
2911 if [ -n "${oldifs+x}" ]; then
2912 IFS="$oldifs"
2913 fi
2914 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
2915 compopt -o filenames
2916 fi
2917 return 0
2918 ;;
2919 --rust-profile-use)
2920 local oldifs
2921 if [ -n "${IFS+x}" ]; then
2922 oldifs="$IFS"
2923 fi
2924 IFS=$'\n'
2925 COMPREPLY=($(compgen -f "${cur}"))
2926 if [ -n "${oldifs+x}" ]; then
2927 IFS="$oldifs"
2928 fi
2929 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
2930 compopt -o filenames
2931 fi
2932 return 0
2933 ;;
2934 --llvm-profile-use)
2935 local oldifs
2936 if [ -n "${IFS+x}" ]; then
2937 oldifs="$IFS"
2938 fi
2939 IFS=$'\n'
2940 COMPREPLY=($(compgen -f "${cur}"))
2941 if [ -n "${oldifs+x}" ]; then
2942 IFS="$oldifs"
2943 fi
2944 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
2945 compopt -o filenames
2946 fi
2947 return 0
2948 ;;
2949 --reproducible-artifact)
2950 COMPREPLY=($(compgen -f "${cur}"))
2951 return 0
2952 ;;
2953 --set)
2954 COMPREPLY=("${cur}")
2955 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
2956 compopt -o nospace
2957 fi
2958 return 0
2959 ;;
2960 *)
2961 COMPREPLY=()
2962 ;;
2963 esac
2964 COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
2965 return 0
2966 ;;
2967 x.py__perf__compare)
2968 opts="-v -i -j -h --verbose --incremental --config --build-dir --build --host --target --exclude --skip --include-default-paths --rustc-error-format --on-fail --dry-run --dump-bootstrap-shims --stage --keep-stage --keep-stage-std --src --jobs --warnings --error-format --json-output --color --bypass-bootstrap-lock --rust-profile-generate --rust-profile-use --llvm-profile-use --llvm-profile-generate --enable-bolt-settings --skip-stage0-validation --reproducible-artifact --set --help <BASE> <MODIFIED> [PATHS]... [ARGS]..."
2969 if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then
2970 COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
2971 return 0
2972 fi
2973 case "${prev}" in
2974 --config)
2975 local oldifs
2976 if [ -n "${IFS+x}" ]; then
2977 oldifs="$IFS"
2978 fi
2979 IFS=$'\n'
2980 COMPREPLY=($(compgen -f "${cur}"))
2981 if [ -n "${oldifs+x}" ]; then
2982 IFS="$oldifs"
2983 fi
2984 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
2985 compopt -o filenames
2986 fi
2987 return 0
2988 ;;
2989 --build-dir)
2990 COMPREPLY=()
2991 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
2992 compopt -o plusdirs
2993 fi
2994 return 0
2995 ;;
2996 --build)
2997 COMPREPLY=("${cur}")
2998 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
2999 compopt -o nospace
3000 fi
3001 return 0
3002 ;;
3003 --host)
3004 COMPREPLY=("${cur}")
3005 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
3006 compopt -o nospace
3007 fi
3008 return 0
3009 ;;
3010 --target)
3011 COMPREPLY=("${cur}")
3012 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
3013 compopt -o nospace
3014 fi
3015 return 0
3016 ;;
3017 --exclude)
3018 COMPREPLY=($(compgen -f "${cur}"))
3019 return 0
3020 ;;
3021 --skip)
3022 COMPREPLY=($(compgen -f "${cur}"))
3023 return 0
3024 ;;
3025 --rustc-error-format)
3026 COMPREPLY=("${cur}")
3027 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
3028 compopt -o nospace
3029 fi
3030 return 0
3031 ;;
3032 --on-fail)
3033 COMPREPLY=($(compgen -f "${cur}"))
3034 return 0
3035 ;;
3036 --stage)
3037 COMPREPLY=("${cur}")
3038 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
3039 compopt -o nospace
3040 fi
3041 return 0
3042 ;;
3043 --keep-stage)
3044 COMPREPLY=("${cur}")
3045 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
3046 compopt -o nospace
3047 fi
3048 return 0
3049 ;;
3050 --keep-stage-std)
3051 COMPREPLY=("${cur}")
3052 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
3053 compopt -o nospace
3054 fi
3055 return 0
3056 ;;
3057 --src)
3058 COMPREPLY=()
3059 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
3060 compopt -o plusdirs
3061 fi
3062 return 0
3063 ;;
3064 --jobs)
3065 COMPREPLY=("${cur}")
3066 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
3067 compopt -o nospace
3068 fi
3069 return 0
3070 ;;
3071 -j)
3072 COMPREPLY=("${cur}")
3073 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
3074 compopt -o nospace
3075 fi
3076 return 0
3077 ;;
3078 --warnings)
3079 COMPREPLY=($(compgen -W "deny warn default" -- "${cur}"))
3080 return 0
3081 ;;
3082 --error-format)
3083 COMPREPLY=("${cur}")
3084 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
3085 compopt -o nospace
3086 fi
3087 return 0
3088 ;;
3089 --color)
3090 COMPREPLY=($(compgen -W "always never auto" -- "${cur}"))
3091 return 0
3092 ;;
3093 --rust-profile-generate)
3094 local oldifs
3095 if [ -n "${IFS+x}" ]; then
3096 oldifs="$IFS"
3097 fi
3098 IFS=$'\n'
3099 COMPREPLY=($(compgen -f "${cur}"))
3100 if [ -n "${oldifs+x}" ]; then
3101 IFS="$oldifs"
3102 fi
3103 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
3104 compopt -o filenames
3105 fi
3106 return 0
3107 ;;
3108 --rust-profile-use)
3109 local oldifs
3110 if [ -n "${IFS+x}" ]; then
3111 oldifs="$IFS"
3112 fi
3113 IFS=$'\n'
3114 COMPREPLY=($(compgen -f "${cur}"))
3115 if [ -n "${oldifs+x}" ]; then
3116 IFS="$oldifs"
3117 fi
3118 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
3119 compopt -o filenames
3120 fi
3121 return 0
3122 ;;
3123 --llvm-profile-use)
3124 local oldifs
3125 if [ -n "${IFS+x}" ]; then
3126 oldifs="$IFS"
3127 fi
3128 IFS=$'\n'
3129 COMPREPLY=($(compgen -f "${cur}"))
3130 if [ -n "${oldifs+x}" ]; then
3131 IFS="$oldifs"
3132 fi
3133 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
3134 compopt -o filenames
3135 fi
3136 return 0
3137 ;;
3138 --reproducible-artifact)
3139 COMPREPLY=($(compgen -f "${cur}"))
3140 return 0
3141 ;;
3142 --set)
3143 COMPREPLY=("${cur}")
3144 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
3145 compopt -o nospace
3146 fi
3147 return 0
3148 ;;
3149 *)
3150 COMPREPLY=()
3151 ;;
3152 esac
3153 COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
3154 return 0
3155 ;;
3156 x.py__perf__eprintln)
3157 opts="-v -i -j -h --include --exclude --scenarios --profiles --verbose --incremental --config --build-dir --build --host --target --skip --include-default-paths --rustc-error-format --on-fail --dry-run --dump-bootstrap-shims --stage --keep-stage --keep-stage-std --src --jobs --warnings --error-format --json-output --color --bypass-bootstrap-lock --rust-profile-generate --rust-profile-use --llvm-profile-use --llvm-profile-generate --enable-bolt-settings --skip-stage0-validation --reproducible-artifact --set --help [PATHS]... [ARGS]..."
3158 if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then
3159 COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
3160 return 0
3161 fi
3162 case "${prev}" in
3163 --include)
3164 COMPREPLY=($(compgen -f "${cur}"))
3165 return 0
3166 ;;
3167 --exclude)
3168 COMPREPLY=($(compgen -f "${cur}"))
3169 return 0
3170 ;;
3171 --scenarios)
3172 COMPREPLY=($(compgen -W "Full IncrFull IncrUnchanged IncrPatched" -- "${cur}"))
3173 return 0
3174 ;;
3175 --profiles)
3176 COMPREPLY=($(compgen -W "Check Debug Doc Opt Clippy" -- "${cur}"))
3177 return 0
3178 ;;
3179 --config)
3180 local oldifs
3181 if [ -n "${IFS+x}" ]; then
3182 oldifs="$IFS"
3183 fi
3184 IFS=$'\n'
3185 COMPREPLY=($(compgen -f "${cur}"))
3186 if [ -n "${oldifs+x}" ]; then
3187 IFS="$oldifs"
3188 fi
3189 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
3190 compopt -o filenames
3191 fi
3192 return 0
3193 ;;
3194 --build-dir)
3195 COMPREPLY=()
3196 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
3197 compopt -o plusdirs
3198 fi
3199 return 0
3200 ;;
3201 --build)
3202 COMPREPLY=("${cur}")
3203 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
3204 compopt -o nospace
3205 fi
3206 return 0
3207 ;;
3208 --host)
3209 COMPREPLY=("${cur}")
3210 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
3211 compopt -o nospace
3212 fi
3213 return 0
3214 ;;
3215 --target)
3216 COMPREPLY=("${cur}")
3217 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
3218 compopt -o nospace
3219 fi
3220 return 0
3221 ;;
3222 --skip)
3223 COMPREPLY=($(compgen -f "${cur}"))
3224 return 0
3225 ;;
3226 --rustc-error-format)
3227 COMPREPLY=("${cur}")
3228 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
3229 compopt -o nospace
3230 fi
3231 return 0
3232 ;;
3233 --on-fail)
3234 COMPREPLY=($(compgen -f "${cur}"))
3235 return 0
3236 ;;
3237 --stage)
3238 COMPREPLY=("${cur}")
3239 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
3240 compopt -o nospace
3241 fi
3242 return 0
3243 ;;
3244 --keep-stage)
3245 COMPREPLY=("${cur}")
3246 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
3247 compopt -o nospace
3248 fi
3249 return 0
3250 ;;
3251 --keep-stage-std)
3252 COMPREPLY=("${cur}")
3253 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
3254 compopt -o nospace
3255 fi
3256 return 0
3257 ;;
3258 --src)
3259 COMPREPLY=()
3260 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
3261 compopt -o plusdirs
3262 fi
3263 return 0
3264 ;;
3265 --jobs)
3266 COMPREPLY=("${cur}")
3267 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
3268 compopt -o nospace
3269 fi
3270 return 0
3271 ;;
3272 -j)
3273 COMPREPLY=("${cur}")
3274 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
3275 compopt -o nospace
3276 fi
3277 return 0
3278 ;;
3279 --warnings)
3280 COMPREPLY=($(compgen -W "deny warn default" -- "${cur}"))
3281 return 0
3282 ;;
3283 --error-format)
3284 COMPREPLY=("${cur}")
3285 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
3286 compopt -o nospace
3287 fi
3288 return 0
3289 ;;
3290 --color)
3291 COMPREPLY=($(compgen -W "always never auto" -- "${cur}"))
3292 return 0
3293 ;;
3294 --rust-profile-generate)
3295 local oldifs
3296 if [ -n "${IFS+x}" ]; then
3297 oldifs="$IFS"
3298 fi
3299 IFS=$'\n'
3300 COMPREPLY=($(compgen -f "${cur}"))
3301 if [ -n "${oldifs+x}" ]; then
3302 IFS="$oldifs"
3303 fi
3304 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
3305 compopt -o filenames
3306 fi
3307 return 0
3308 ;;
3309 --rust-profile-use)
3310 local oldifs
3311 if [ -n "${IFS+x}" ]; then
3312 oldifs="$IFS"
3313 fi
3314 IFS=$'\n'
3315 COMPREPLY=($(compgen -f "${cur}"))
3316 if [ -n "${oldifs+x}" ]; then
3317 IFS="$oldifs"
3318 fi
3319 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
3320 compopt -o filenames
3321 fi
3322 return 0
3323 ;;
3324 --llvm-profile-use)
3325 local oldifs
3326 if [ -n "${IFS+x}" ]; then
3327 oldifs="$IFS"
3328 fi
3329 IFS=$'\n'
3330 COMPREPLY=($(compgen -f "${cur}"))
3331 if [ -n "${oldifs+x}" ]; then
3332 IFS="$oldifs"
3333 fi
3334 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
3335 compopt -o filenames
3336 fi
3337 return 0
3338 ;;
3339 --reproducible-artifact)
3340 COMPREPLY=($(compgen -f "${cur}"))
3341 return 0
3342 ;;
3343 --set)
3344 COMPREPLY=("${cur}")
3345 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
3346 compopt -o nospace
3347 fi
3348 return 0
3349 ;;
3350 *)
3351 COMPREPLY=()
3352 ;;
3353 esac
3354 COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
3355 return 0
3356 ;;
3357 x.py__perf__samply)
3358 opts="-v -i -j -h --include --exclude --scenarios --profiles --verbose --incremental --config --build-dir --build --host --target --skip --include-default-paths --rustc-error-format --on-fail --dry-run --dump-bootstrap-shims --stage --keep-stage --keep-stage-std --src --jobs --warnings --error-format --json-output --color --bypass-bootstrap-lock --rust-profile-generate --rust-profile-use --llvm-profile-use --llvm-profile-generate --enable-bolt-settings --skip-stage0-validation --reproducible-artifact --set --help [PATHS]... [ARGS]..."
3359 if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then
3360 COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
3361 return 0
3362 fi
3363 case "${prev}" in
3364 --include)
3365 COMPREPLY=($(compgen -f "${cur}"))
3366 return 0
3367 ;;
3368 --exclude)
3369 COMPREPLY=($(compgen -f "${cur}"))
3370 return 0
3371 ;;
3372 --scenarios)
3373 COMPREPLY=($(compgen -W "Full IncrFull IncrUnchanged IncrPatched" -- "${cur}"))
3374 return 0
3375 ;;
3376 --profiles)
3377 COMPREPLY=($(compgen -W "Check Debug Doc Opt Clippy" -- "${cur}"))
3378 return 0
3379 ;;
3380 --config)
3381 local oldifs
3382 if [ -n "${IFS+x}" ]; then
3383 oldifs="$IFS"
3384 fi
3385 IFS=$'\n'
3386 COMPREPLY=($(compgen -f "${cur}"))
3387 if [ -n "${oldifs+x}" ]; then
3388 IFS="$oldifs"
3389 fi
3390 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
3391 compopt -o filenames
3392 fi
3393 return 0
3394 ;;
3395 --build-dir)
3396 COMPREPLY=()
3397 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
3398 compopt -o plusdirs
3399 fi
3400 return 0
3401 ;;
3402 --build)
3403 COMPREPLY=("${cur}")
3404 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
3405 compopt -o nospace
3406 fi
3407 return 0
3408 ;;
3409 --host)
3410 COMPREPLY=("${cur}")
3411 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
3412 compopt -o nospace
3413 fi
3414 return 0
3415 ;;
3416 --target)
3417 COMPREPLY=("${cur}")
3418 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
3419 compopt -o nospace
3420 fi
3421 return 0
3422 ;;
3423 --skip)
3424 COMPREPLY=($(compgen -f "${cur}"))
3425 return 0
3426 ;;
3427 --rustc-error-format)
3428 COMPREPLY=("${cur}")
3429 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
3430 compopt -o nospace
3431 fi
3432 return 0
3433 ;;
3434 --on-fail)
3435 COMPREPLY=($(compgen -f "${cur}"))
3436 return 0
3437 ;;
3438 --stage)
3439 COMPREPLY=("${cur}")
3440 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
3441 compopt -o nospace
3442 fi
3443 return 0
3444 ;;
3445 --keep-stage)
3446 COMPREPLY=("${cur}")
3447 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
3448 compopt -o nospace
3449 fi
3450 return 0
3451 ;;
3452 --keep-stage-std)
3453 COMPREPLY=("${cur}")
3454 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
3455 compopt -o nospace
3456 fi
3457 return 0
3458 ;;
3459 --src)
3460 COMPREPLY=()
3461 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
3462 compopt -o plusdirs
3463 fi
3464 return 0
3465 ;;
3466 --jobs)
3467 COMPREPLY=("${cur}")
3468 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
3469 compopt -o nospace
3470 fi
3471 return 0
3472 ;;
3473 -j)
3474 COMPREPLY=("${cur}")
3475 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
3476 compopt -o nospace
3477 fi
3478 return 0
3479 ;;
3480 --warnings)
3481 COMPREPLY=($(compgen -W "deny warn default" -- "${cur}"))
3482 return 0
3483 ;;
3484 --error-format)
3485 COMPREPLY=("${cur}")
3486 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
3487 compopt -o nospace
3488 fi
3489 return 0
3490 ;;
3491 --color)
3492 COMPREPLY=($(compgen -W "always never auto" -- "${cur}"))
3493 return 0
3494 ;;
3495 --rust-profile-generate)
3496 local oldifs
3497 if [ -n "${IFS+x}" ]; then
3498 oldifs="$IFS"
3499 fi
3500 IFS=$'\n'
3501 COMPREPLY=($(compgen -f "${cur}"))
3502 if [ -n "${oldifs+x}" ]; then
3503 IFS="$oldifs"
3504 fi
3505 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
3506 compopt -o filenames
3507 fi
3508 return 0
3509 ;;
3510 --rust-profile-use)
3511 local oldifs
3512 if [ -n "${IFS+x}" ]; then
3513 oldifs="$IFS"
3514 fi
3515 IFS=$'\n'
3516 COMPREPLY=($(compgen -f "${cur}"))
3517 if [ -n "${oldifs+x}" ]; then
3518 IFS="$oldifs"
3519 fi
3520 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
3521 compopt -o filenames
3522 fi
3523 return 0
3524 ;;
3525 --llvm-profile-use)
3526 local oldifs
3527 if [ -n "${IFS+x}" ]; then
3528 oldifs="$IFS"
3529 fi
3530 IFS=$'\n'
3531 COMPREPLY=($(compgen -f "${cur}"))
3532 if [ -n "${oldifs+x}" ]; then
3533 IFS="$oldifs"
3534 fi
3535 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
3536 compopt -o filenames
3537 fi
3538 return 0
3539 ;;
3540 --reproducible-artifact)
3541 COMPREPLY=($(compgen -f "${cur}"))
3542 return 0
3543 ;;
3544 --set)
3545 COMPREPLY=("${cur}")
3546 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
3547 compopt -o nospace
3548 fi
3549 return 0
3550 ;;
3551 *)
3552 COMPREPLY=()
3553 ;;
3554 esac
3555 COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
3556 return 0
3557 ;;
25503558 x.py__run)
25513559 opts="-v -i -j -h --args --verbose --incremental --config --build-dir --build --host --target --exclude --skip --include-default-paths --rustc-error-format --on-fail --dry-run --dump-bootstrap-shims --stage --keep-stage --keep-stage-std --src --jobs --warnings --error-format --json-output --color --bypass-bootstrap-lock --rust-profile-generate --rust-profile-use --llvm-profile-use --llvm-profile-generate --enable-bolt-settings --skip-stage0-validation --reproducible-artifact --set --help [PATHS]... [ARGS]..."
25523560 if [[ ${cur} == -* || ${COMP_CWORD} -eq 2 ]] ; then
src/etc/completions/x.py.zsh+271-2
......@@ -811,8 +811,246 @@ _arguments "${_arguments_options[@]}" : \
811811'--skip-stage0-validation[Skip stage0 compiler validation]' \
812812'-h[Print help (see more with '\''--help'\'')]' \
813813'--help[Print help (see more with '\''--help'\'')]' \
814'::paths -- paths for the subcommand:_files' \
815'::free_args -- arguments passed to subcommands:_default' \
816":: :_x.py__perf_commands" \
817"*::: :->perf" \
818&& ret=0
819
820 case $state in
821 (perf)
822 words=($line[3] "${words[@]}")
823 (( CURRENT += 1 ))
824 curcontext="${curcontext%:*:*}:x.py-perf-command-$line[3]:"
825 case $line[3] in
826 (eprintln)
827_arguments "${_arguments_options[@]}" : \
828'*--include=[Select the benchmarks that you want to run (separated by commas). If unspecified, all benchmarks will be executed]:INCLUDE:_default' \
829'*--exclude=[Select the benchmarks matching a prefix in this comma-separated list that you don'\''t want to run]:EXCLUDE:_default' \
830'*--scenarios=[Select the scenarios that should be benchmarked]:SCENARIOS:(Full IncrFull IncrUnchanged IncrPatched)' \
831'*--profiles=[Select the profiles that should be benchmarked]:PROFILES:(Check Debug Doc Opt Clippy)' \
832'--config=[TOML configuration file for build]:FILE:_files' \
833'--build-dir=[Build directory, overrides \`build.build-dir\` in \`config.toml\`]:DIR:_files -/' \
834'--build=[build target of the stage0 compiler]:BUILD:' \
835'--host=[host targets to build]:HOST:' \
836'--target=[target targets to build]:TARGET:' \
837'*--skip=[build paths to skip]:PATH:_files' \
838'--rustc-error-format=[]:RUSTC_ERROR_FORMAT:' \
839'--on-fail=[command to run on failure]:CMD:_cmdstring' \
840'--stage=[stage to build (indicates compiler to use/test, e.g., stage 0 uses the bootstrap compiler, stage 1 the stage 0 rustc artifacts, etc.)]:N:' \
841'*--keep-stage=[stage(s) to keep without recompiling (pass multiple times to keep e.g., both stages 0 and 1)]:N:' \
842'*--keep-stage-std=[stage(s) of the standard library to keep without recompiling (pass multiple times to keep e.g., both stages 0 and 1)]:N:' \
843'--src=[path to the root of the rust checkout]:DIR:_files -/' \
844'-j+[number of jobs to run in parallel]:JOBS:' \
845'--jobs=[number of jobs to run in parallel]:JOBS:' \
846'--warnings=[if value is deny, will deny warnings if value is warn, will emit warnings otherwise, use the default configured behaviour]:deny|warn:(deny warn default)' \
847'--error-format=[rustc error format]:FORMAT:' \
848'--color=[whether to use color in cargo and rustc output]:STYLE:(always never auto)' \
849'--rust-profile-generate=[generate PGO profile with rustc build]:PROFILE:_files' \
850'--rust-profile-use=[use PGO profile for rustc build]:PROFILE:_files' \
851'--llvm-profile-use=[use PGO profile for LLVM build]:PROFILE:_files' \
852'*--reproducible-artifact=[Additional reproducible artifacts that should be added to the reproducible artifacts archive]:REPRODUCIBLE_ARTIFACT:_default' \
853'*--set=[override options in config.toml]:section.option=value:' \
854'*-v[use verbose output (-vv for very verbose)]' \
855'*--verbose[use verbose output (-vv for very verbose)]' \
856'-i[use incremental compilation]' \
857'--incremental[use incremental compilation]' \
858'--include-default-paths[include default paths in addition to the provided ones]' \
859'--dry-run[dry run; don'\''t build anything]' \
860'--dump-bootstrap-shims[Indicates whether to dump the work done from bootstrap shims]' \
861'--json-output[use message-format=json]' \
862'--bypass-bootstrap-lock[Bootstrap uses this value to decide whether it should bypass locking the build process. This is rarely needed (e.g., compiling the std library for different targets in parallel)]' \
863'--llvm-profile-generate[generate PGO profile with llvm built for rustc]' \
864'--enable-bolt-settings[Enable BOLT link flags]' \
865'--skip-stage0-validation[Skip stage0 compiler validation]' \
866'-h[Print help (see more with '\''--help'\'')]' \
867'--help[Print help (see more with '\''--help'\'')]' \
868'*::paths -- paths for the subcommand:_files' \
869&& ret=0
870;;
871(samply)
872_arguments "${_arguments_options[@]}" : \
873'*--include=[Select the benchmarks that you want to run (separated by commas). If unspecified, all benchmarks will be executed]:INCLUDE:_default' \
874'*--exclude=[Select the benchmarks matching a prefix in this comma-separated list that you don'\''t want to run]:EXCLUDE:_default' \
875'*--scenarios=[Select the scenarios that should be benchmarked]:SCENARIOS:(Full IncrFull IncrUnchanged IncrPatched)' \
876'*--profiles=[Select the profiles that should be benchmarked]:PROFILES:(Check Debug Doc Opt Clippy)' \
877'--config=[TOML configuration file for build]:FILE:_files' \
878'--build-dir=[Build directory, overrides \`build.build-dir\` in \`config.toml\`]:DIR:_files -/' \
879'--build=[build target of the stage0 compiler]:BUILD:' \
880'--host=[host targets to build]:HOST:' \
881'--target=[target targets to build]:TARGET:' \
882'*--skip=[build paths to skip]:PATH:_files' \
883'--rustc-error-format=[]:RUSTC_ERROR_FORMAT:' \
884'--on-fail=[command to run on failure]:CMD:_cmdstring' \
885'--stage=[stage to build (indicates compiler to use/test, e.g., stage 0 uses the bootstrap compiler, stage 1 the stage 0 rustc artifacts, etc.)]:N:' \
886'*--keep-stage=[stage(s) to keep without recompiling (pass multiple times to keep e.g., both stages 0 and 1)]:N:' \
887'*--keep-stage-std=[stage(s) of the standard library to keep without recompiling (pass multiple times to keep e.g., both stages 0 and 1)]:N:' \
888'--src=[path to the root of the rust checkout]:DIR:_files -/' \
889'-j+[number of jobs to run in parallel]:JOBS:' \
890'--jobs=[number of jobs to run in parallel]:JOBS:' \
891'--warnings=[if value is deny, will deny warnings if value is warn, will emit warnings otherwise, use the default configured behaviour]:deny|warn:(deny warn default)' \
892'--error-format=[rustc error format]:FORMAT:' \
893'--color=[whether to use color in cargo and rustc output]:STYLE:(always never auto)' \
894'--rust-profile-generate=[generate PGO profile with rustc build]:PROFILE:_files' \
895'--rust-profile-use=[use PGO profile for rustc build]:PROFILE:_files' \
896'--llvm-profile-use=[use PGO profile for LLVM build]:PROFILE:_files' \
897'*--reproducible-artifact=[Additional reproducible artifacts that should be added to the reproducible artifacts archive]:REPRODUCIBLE_ARTIFACT:_default' \
898'*--set=[override options in config.toml]:section.option=value:' \
899'*-v[use verbose output (-vv for very verbose)]' \
900'*--verbose[use verbose output (-vv for very verbose)]' \
901'-i[use incremental compilation]' \
902'--incremental[use incremental compilation]' \
903'--include-default-paths[include default paths in addition to the provided ones]' \
904'--dry-run[dry run; don'\''t build anything]' \
905'--dump-bootstrap-shims[Indicates whether to dump the work done from bootstrap shims]' \
906'--json-output[use message-format=json]' \
907'--bypass-bootstrap-lock[Bootstrap uses this value to decide whether it should bypass locking the build process. This is rarely needed (e.g., compiling the std library for different targets in parallel)]' \
908'--llvm-profile-generate[generate PGO profile with llvm built for rustc]' \
909'--enable-bolt-settings[Enable BOLT link flags]' \
910'--skip-stage0-validation[Skip stage0 compiler validation]' \
911'-h[Print help (see more with '\''--help'\'')]' \
912'--help[Print help (see more with '\''--help'\'')]' \
814913'*::paths -- paths for the subcommand:_files' \
815914&& ret=0
915;;
916(cachegrind)
917_arguments "${_arguments_options[@]}" : \
918'*--include=[Select the benchmarks that you want to run (separated by commas). If unspecified, all benchmarks will be executed]:INCLUDE:_default' \
919'*--exclude=[Select the benchmarks matching a prefix in this comma-separated list that you don'\''t want to run]:EXCLUDE:_default' \
920'*--scenarios=[Select the scenarios that should be benchmarked]:SCENARIOS:(Full IncrFull IncrUnchanged IncrPatched)' \
921'*--profiles=[Select the profiles that should be benchmarked]:PROFILES:(Check Debug Doc Opt Clippy)' \
922'--config=[TOML configuration file for build]:FILE:_files' \
923'--build-dir=[Build directory, overrides \`build.build-dir\` in \`config.toml\`]:DIR:_files -/' \
924'--build=[build target of the stage0 compiler]:BUILD:' \
925'--host=[host targets to build]:HOST:' \
926'--target=[target targets to build]:TARGET:' \
927'*--skip=[build paths to skip]:PATH:_files' \
928'--rustc-error-format=[]:RUSTC_ERROR_FORMAT:' \
929'--on-fail=[command to run on failure]:CMD:_cmdstring' \
930'--stage=[stage to build (indicates compiler to use/test, e.g., stage 0 uses the bootstrap compiler, stage 1 the stage 0 rustc artifacts, etc.)]:N:' \
931'*--keep-stage=[stage(s) to keep without recompiling (pass multiple times to keep e.g., both stages 0 and 1)]:N:' \
932'*--keep-stage-std=[stage(s) of the standard library to keep without recompiling (pass multiple times to keep e.g., both stages 0 and 1)]:N:' \
933'--src=[path to the root of the rust checkout]:DIR:_files -/' \
934'-j+[number of jobs to run in parallel]:JOBS:' \
935'--jobs=[number of jobs to run in parallel]:JOBS:' \
936'--warnings=[if value is deny, will deny warnings if value is warn, will emit warnings otherwise, use the default configured behaviour]:deny|warn:(deny warn default)' \
937'--error-format=[rustc error format]:FORMAT:' \
938'--color=[whether to use color in cargo and rustc output]:STYLE:(always never auto)' \
939'--rust-profile-generate=[generate PGO profile with rustc build]:PROFILE:_files' \
940'--rust-profile-use=[use PGO profile for rustc build]:PROFILE:_files' \
941'--llvm-profile-use=[use PGO profile for LLVM build]:PROFILE:_files' \
942'*--reproducible-artifact=[Additional reproducible artifacts that should be added to the reproducible artifacts archive]:REPRODUCIBLE_ARTIFACT:_default' \
943'*--set=[override options in config.toml]:section.option=value:' \
944'*-v[use verbose output (-vv for very verbose)]' \
945'*--verbose[use verbose output (-vv for very verbose)]' \
946'-i[use incremental compilation]' \
947'--incremental[use incremental compilation]' \
948'--include-default-paths[include default paths in addition to the provided ones]' \
949'--dry-run[dry run; don'\''t build anything]' \
950'--dump-bootstrap-shims[Indicates whether to dump the work done from bootstrap shims]' \
951'--json-output[use message-format=json]' \
952'--bypass-bootstrap-lock[Bootstrap uses this value to decide whether it should bypass locking the build process. This is rarely needed (e.g., compiling the std library for different targets in parallel)]' \
953'--llvm-profile-generate[generate PGO profile with llvm built for rustc]' \
954'--enable-bolt-settings[Enable BOLT link flags]' \
955'--skip-stage0-validation[Skip stage0 compiler validation]' \
956'-h[Print help (see more with '\''--help'\'')]' \
957'--help[Print help (see more with '\''--help'\'')]' \
958'*::paths -- paths for the subcommand:_files' \
959&& ret=0
960;;
961(benchmark)
962_arguments "${_arguments_options[@]}" : \
963'*--include=[Select the benchmarks that you want to run (separated by commas). If unspecified, all benchmarks will be executed]:INCLUDE:_default' \
964'*--exclude=[Select the benchmarks matching a prefix in this comma-separated list that you don'\''t want to run]:EXCLUDE:_default' \
965'*--scenarios=[Select the scenarios that should be benchmarked]:SCENARIOS:(Full IncrFull IncrUnchanged IncrPatched)' \
966'*--profiles=[Select the profiles that should be benchmarked]:PROFILES:(Check Debug Doc Opt Clippy)' \
967'--config=[TOML configuration file for build]:FILE:_files' \
968'--build-dir=[Build directory, overrides \`build.build-dir\` in \`config.toml\`]:DIR:_files -/' \
969'--build=[build target of the stage0 compiler]:BUILD:' \
970'--host=[host targets to build]:HOST:' \
971'--target=[target targets to build]:TARGET:' \
972'*--skip=[build paths to skip]:PATH:_files' \
973'--rustc-error-format=[]:RUSTC_ERROR_FORMAT:' \
974'--on-fail=[command to run on failure]:CMD:_cmdstring' \
975'--stage=[stage to build (indicates compiler to use/test, e.g., stage 0 uses the bootstrap compiler, stage 1 the stage 0 rustc artifacts, etc.)]:N:' \
976'*--keep-stage=[stage(s) to keep without recompiling (pass multiple times to keep e.g., both stages 0 and 1)]:N:' \
977'*--keep-stage-std=[stage(s) of the standard library to keep without recompiling (pass multiple times to keep e.g., both stages 0 and 1)]:N:' \
978'--src=[path to the root of the rust checkout]:DIR:_files -/' \
979'-j+[number of jobs to run in parallel]:JOBS:' \
980'--jobs=[number of jobs to run in parallel]:JOBS:' \
981'--warnings=[if value is deny, will deny warnings if value is warn, will emit warnings otherwise, use the default configured behaviour]:deny|warn:(deny warn default)' \
982'--error-format=[rustc error format]:FORMAT:' \
983'--color=[whether to use color in cargo and rustc output]:STYLE:(always never auto)' \
984'--rust-profile-generate=[generate PGO profile with rustc build]:PROFILE:_files' \
985'--rust-profile-use=[use PGO profile for rustc build]:PROFILE:_files' \
986'--llvm-profile-use=[use PGO profile for LLVM build]:PROFILE:_files' \
987'*--reproducible-artifact=[Additional reproducible artifacts that should be added to the reproducible artifacts archive]:REPRODUCIBLE_ARTIFACT:_default' \
988'*--set=[override options in config.toml]:section.option=value:' \
989'*-v[use verbose output (-vv for very verbose)]' \
990'*--verbose[use verbose output (-vv for very verbose)]' \
991'-i[use incremental compilation]' \
992'--incremental[use incremental compilation]' \
993'--include-default-paths[include default paths in addition to the provided ones]' \
994'--dry-run[dry run; don'\''t build anything]' \
995'--dump-bootstrap-shims[Indicates whether to dump the work done from bootstrap shims]' \
996'--json-output[use message-format=json]' \
997'--bypass-bootstrap-lock[Bootstrap uses this value to decide whether it should bypass locking the build process. This is rarely needed (e.g., compiling the std library for different targets in parallel)]' \
998'--llvm-profile-generate[generate PGO profile with llvm built for rustc]' \
999'--enable-bolt-settings[Enable BOLT link flags]' \
1000'--skip-stage0-validation[Skip stage0 compiler validation]' \
1001'-h[Print help (see more with '\''--help'\'')]' \
1002'--help[Print help (see more with '\''--help'\'')]' \
1003':benchmark-id -- Identifier to associate benchmark results with:_default' \
1004'*::paths -- paths for the subcommand:_files' \
1005&& ret=0
1006;;
1007(compare)
1008_arguments "${_arguments_options[@]}" : \
1009'--config=[TOML configuration file for build]:FILE:_files' \
1010'--build-dir=[Build directory, overrides \`build.build-dir\` in \`config.toml\`]:DIR:_files -/' \
1011'--build=[build target of the stage0 compiler]:BUILD:' \
1012'--host=[host targets to build]:HOST:' \
1013'--target=[target targets to build]:TARGET:' \
1014'*--exclude=[build paths to exclude]:PATH:_files' \
1015'*--skip=[build paths to skip]:PATH:_files' \
1016'--rustc-error-format=[]:RUSTC_ERROR_FORMAT:' \
1017'--on-fail=[command to run on failure]:CMD:_cmdstring' \
1018'--stage=[stage to build (indicates compiler to use/test, e.g., stage 0 uses the bootstrap compiler, stage 1 the stage 0 rustc artifacts, etc.)]:N:' \
1019'*--keep-stage=[stage(s) to keep without recompiling (pass multiple times to keep e.g., both stages 0 and 1)]:N:' \
1020'*--keep-stage-std=[stage(s) of the standard library to keep without recompiling (pass multiple times to keep e.g., both stages 0 and 1)]:N:' \
1021'--src=[path to the root of the rust checkout]:DIR:_files -/' \
1022'-j+[number of jobs to run in parallel]:JOBS:' \
1023'--jobs=[number of jobs to run in parallel]:JOBS:' \
1024'--warnings=[if value is deny, will deny warnings if value is warn, will emit warnings otherwise, use the default configured behaviour]:deny|warn:(deny warn default)' \
1025'--error-format=[rustc error format]:FORMAT:' \
1026'--color=[whether to use color in cargo and rustc output]:STYLE:(always never auto)' \
1027'--rust-profile-generate=[generate PGO profile with rustc build]:PROFILE:_files' \
1028'--rust-profile-use=[use PGO profile for rustc build]:PROFILE:_files' \
1029'--llvm-profile-use=[use PGO profile for LLVM build]:PROFILE:_files' \
1030'*--reproducible-artifact=[Additional reproducible artifacts that should be added to the reproducible artifacts archive]:REPRODUCIBLE_ARTIFACT:_default' \
1031'*--set=[override options in config.toml]:section.option=value:' \
1032'*-v[use verbose output (-vv for very verbose)]' \
1033'*--verbose[use verbose output (-vv for very verbose)]' \
1034'-i[use incremental compilation]' \
1035'--incremental[use incremental compilation]' \
1036'--include-default-paths[include default paths in addition to the provided ones]' \
1037'--dry-run[dry run; don'\''t build anything]' \
1038'--dump-bootstrap-shims[Indicates whether to dump the work done from bootstrap shims]' \
1039'--json-output[use message-format=json]' \
1040'--bypass-bootstrap-lock[Bootstrap uses this value to decide whether it should bypass locking the build process. This is rarely needed (e.g., compiling the std library for different targets in parallel)]' \
1041'--llvm-profile-generate[generate PGO profile with llvm built for rustc]' \
1042'--enable-bolt-settings[Enable BOLT link flags]' \
1043'--skip-stage0-validation[Skip stage0 compiler validation]' \
1044'-h[Print help (see more with '\''--help'\'')]' \
1045'--help[Print help (see more with '\''--help'\'')]' \
1046':base -- The name of the base artifact to be compared:_default' \
1047':modified -- The name of the modified artifact to be compared:_default' \
1048'*::paths -- paths for the subcommand:_files' \
1049&& ret=0
1050;;
1051 esac
1052 ;;
1053esac
8161054;;
8171055 esac
8181056 ;;
......@@ -838,7 +1076,7 @@ _x.py_commands() {
8381076'setup:Set up the environment for development' \
8391077'suggest:Suggest a subset of tests to run, based on modified files' \
8401078'vendor:Vendor dependencies' \
841'perf:Perform profiling and benchmarking of the compiler using the \`rustc-perf-wrapper\` tool' \
1079'perf:Perform profiling and benchmarking of the compiler using \`rustc-perf\`' \
8421080 )
8431081 _describe -t commands 'x.py commands' commands "$@"
8441082}
......@@ -899,9 +1137,40 @@ _x.py__miri_commands() {
8991137}
9001138(( $+functions[_x.py__perf_commands] )) ||
9011139_x.py__perf_commands() {
902 local commands; commands=()
1140 local commands; commands=(
1141'eprintln:Run \`profile_local eprintln\`. This executes the compiler on the given benchmarks and stores its stderr output' \
1142'samply:Run \`profile_local samply\` This executes the compiler on the given benchmarks and profiles it with \`samply\`. You need to install \`samply\`, e.g. using \`cargo install samply\`' \
1143'cachegrind:Run \`profile_local cachegrind\`. This executes the compiler on the given benchmarks under \`Cachegrind\`' \
1144'benchmark:Run compile benchmarks with a locally built compiler' \
1145'compare:Compare the results of two previously executed benchmark runs' \
1146 )
9031147 _describe -t commands 'x.py perf commands' commands "$@"
9041148}
1149(( $+functions[_x.py__perf__benchmark_commands] )) ||
1150_x.py__perf__benchmark_commands() {
1151 local commands; commands=()
1152 _describe -t commands 'x.py perf benchmark commands' commands "$@"
1153}
1154(( $+functions[_x.py__perf__cachegrind_commands] )) ||
1155_x.py__perf__cachegrind_commands() {
1156 local commands; commands=()
1157 _describe -t commands 'x.py perf cachegrind commands' commands "$@"
1158}
1159(( $+functions[_x.py__perf__compare_commands] )) ||
1160_x.py__perf__compare_commands() {
1161 local commands; commands=()
1162 _describe -t commands 'x.py perf compare commands' commands "$@"
1163}
1164(( $+functions[_x.py__perf__eprintln_commands] )) ||
1165_x.py__perf__eprintln_commands() {
1166 local commands; commands=()
1167 _describe -t commands 'x.py perf eprintln commands' commands "$@"
1168}
1169(( $+functions[_x.py__perf__samply_commands] )) ||
1170_x.py__perf__samply_commands() {
1171 local commands; commands=()
1172 _describe -t commands 'x.py perf samply commands' commands "$@"
1173}
9051174(( $+functions[_x.py__run_commands] )) ||
9061175_x.py__run_commands() {
9071176 local commands; commands=()
src/etc/completions/x.sh+1009-1
......@@ -63,6 +63,21 @@ _x() {
6363 x,vendor)
6464 cmd="x__vendor"
6565 ;;
66 x__perf,benchmark)
67 cmd="x__perf__benchmark"
68 ;;
69 x__perf,cachegrind)
70 cmd="x__perf__cachegrind"
71 ;;
72 x__perf,compare)
73 cmd="x__perf__compare"
74 ;;
75 x__perf,eprintln)
76 cmd="x__perf__eprintln"
77 ;;
78 x__perf,samply)
79 cmd="x__perf__samply"
80 ;;
6681 *)
6782 ;;
6883 esac
......@@ -2359,7 +2374,7 @@ _x() {
23592374 return 0
23602375 ;;
23612376 x__perf)
2362 opts="-v -i -j -h --verbose --incremental --config --build-dir --build --host --target --exclude --skip --include-default-paths --rustc-error-format --on-fail --dry-run --dump-bootstrap-shims --stage --keep-stage --keep-stage-std --src --jobs --warnings --error-format --json-output --color --bypass-bootstrap-lock --rust-profile-generate --rust-profile-use --llvm-profile-use --llvm-profile-generate --enable-bolt-settings --skip-stage0-validation --reproducible-artifact --set --help [PATHS]... [ARGS]..."
2377 opts="-v -i -j -h --verbose --incremental --config --build-dir --build --host --target --exclude --skip --include-default-paths --rustc-error-format --on-fail --dry-run --dump-bootstrap-shims --stage --keep-stage --keep-stage-std --src --jobs --warnings --error-format --json-output --color --bypass-bootstrap-lock --rust-profile-generate --rust-profile-use --llvm-profile-use --llvm-profile-generate --enable-bolt-settings --skip-stage0-validation --reproducible-artifact --set --help [PATHS]... [ARGS]... eprintln samply cachegrind benchmark compare"
23632378 if [[ ${cur} == -* || ${COMP_CWORD} -eq 2 ]] ; then
23642379 COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
23652380 return 0
......@@ -2547,6 +2562,999 @@ _x() {
25472562 COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
25482563 return 0
25492564 ;;
2565 x__perf__benchmark)
2566 opts="-v -i -j -h --include --exclude --scenarios --profiles --verbose --incremental --config --build-dir --build --host --target --skip --include-default-paths --rustc-error-format --on-fail --dry-run --dump-bootstrap-shims --stage --keep-stage --keep-stage-std --src --jobs --warnings --error-format --json-output --color --bypass-bootstrap-lock --rust-profile-generate --rust-profile-use --llvm-profile-use --llvm-profile-generate --enable-bolt-settings --skip-stage0-validation --reproducible-artifact --set --help <benchmark-id> [PATHS]... [ARGS]..."
2567 if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then
2568 COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
2569 return 0
2570 fi
2571 case "${prev}" in
2572 --include)
2573 COMPREPLY=($(compgen -f "${cur}"))
2574 return 0
2575 ;;
2576 --exclude)
2577 COMPREPLY=($(compgen -f "${cur}"))
2578 return 0
2579 ;;
2580 --scenarios)
2581 COMPREPLY=($(compgen -W "Full IncrFull IncrUnchanged IncrPatched" -- "${cur}"))
2582 return 0
2583 ;;
2584 --profiles)
2585 COMPREPLY=($(compgen -W "Check Debug Doc Opt Clippy" -- "${cur}"))
2586 return 0
2587 ;;
2588 --config)
2589 local oldifs
2590 if [ -n "${IFS+x}" ]; then
2591 oldifs="$IFS"
2592 fi
2593 IFS=$'\n'
2594 COMPREPLY=($(compgen -f "${cur}"))
2595 if [ -n "${oldifs+x}" ]; then
2596 IFS="$oldifs"
2597 fi
2598 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
2599 compopt -o filenames
2600 fi
2601 return 0
2602 ;;
2603 --build-dir)
2604 COMPREPLY=()
2605 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
2606 compopt -o plusdirs
2607 fi
2608 return 0
2609 ;;
2610 --build)
2611 COMPREPLY=("${cur}")
2612 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
2613 compopt -o nospace
2614 fi
2615 return 0
2616 ;;
2617 --host)
2618 COMPREPLY=("${cur}")
2619 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
2620 compopt -o nospace
2621 fi
2622 return 0
2623 ;;
2624 --target)
2625 COMPREPLY=("${cur}")
2626 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
2627 compopt -o nospace
2628 fi
2629 return 0
2630 ;;
2631 --skip)
2632 COMPREPLY=($(compgen -f "${cur}"))
2633 return 0
2634 ;;
2635 --rustc-error-format)
2636 COMPREPLY=("${cur}")
2637 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
2638 compopt -o nospace
2639 fi
2640 return 0
2641 ;;
2642 --on-fail)
2643 COMPREPLY=($(compgen -f "${cur}"))
2644 return 0
2645 ;;
2646 --stage)
2647 COMPREPLY=("${cur}")
2648 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
2649 compopt -o nospace
2650 fi
2651 return 0
2652 ;;
2653 --keep-stage)
2654 COMPREPLY=("${cur}")
2655 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
2656 compopt -o nospace
2657 fi
2658 return 0
2659 ;;
2660 --keep-stage-std)
2661 COMPREPLY=("${cur}")
2662 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
2663 compopt -o nospace
2664 fi
2665 return 0
2666 ;;
2667 --src)
2668 COMPREPLY=()
2669 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
2670 compopt -o plusdirs
2671 fi
2672 return 0
2673 ;;
2674 --jobs)
2675 COMPREPLY=("${cur}")
2676 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
2677 compopt -o nospace
2678 fi
2679 return 0
2680 ;;
2681 -j)
2682 COMPREPLY=("${cur}")
2683 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
2684 compopt -o nospace
2685 fi
2686 return 0
2687 ;;
2688 --warnings)
2689 COMPREPLY=($(compgen -W "deny warn default" -- "${cur}"))
2690 return 0
2691 ;;
2692 --error-format)
2693 COMPREPLY=("${cur}")
2694 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
2695 compopt -o nospace
2696 fi
2697 return 0
2698 ;;
2699 --color)
2700 COMPREPLY=($(compgen -W "always never auto" -- "${cur}"))
2701 return 0
2702 ;;
2703 --rust-profile-generate)
2704 local oldifs
2705 if [ -n "${IFS+x}" ]; then
2706 oldifs="$IFS"
2707 fi
2708 IFS=$'\n'
2709 COMPREPLY=($(compgen -f "${cur}"))
2710 if [ -n "${oldifs+x}" ]; then
2711 IFS="$oldifs"
2712 fi
2713 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
2714 compopt -o filenames
2715 fi
2716 return 0
2717 ;;
2718 --rust-profile-use)
2719 local oldifs
2720 if [ -n "${IFS+x}" ]; then
2721 oldifs="$IFS"
2722 fi
2723 IFS=$'\n'
2724 COMPREPLY=($(compgen -f "${cur}"))
2725 if [ -n "${oldifs+x}" ]; then
2726 IFS="$oldifs"
2727 fi
2728 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
2729 compopt -o filenames
2730 fi
2731 return 0
2732 ;;
2733 --llvm-profile-use)
2734 local oldifs
2735 if [ -n "${IFS+x}" ]; then
2736 oldifs="$IFS"
2737 fi
2738 IFS=$'\n'
2739 COMPREPLY=($(compgen -f "${cur}"))
2740 if [ -n "${oldifs+x}" ]; then
2741 IFS="$oldifs"
2742 fi
2743 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
2744 compopt -o filenames
2745 fi
2746 return 0
2747 ;;
2748 --reproducible-artifact)
2749 COMPREPLY=($(compgen -f "${cur}"))
2750 return 0
2751 ;;
2752 --set)
2753 COMPREPLY=("${cur}")
2754 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
2755 compopt -o nospace
2756 fi
2757 return 0
2758 ;;
2759 *)
2760 COMPREPLY=()
2761 ;;
2762 esac
2763 COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
2764 return 0
2765 ;;
2766 x__perf__cachegrind)
2767 opts="-v -i -j -h --include --exclude --scenarios --profiles --verbose --incremental --config --build-dir --build --host --target --skip --include-default-paths --rustc-error-format --on-fail --dry-run --dump-bootstrap-shims --stage --keep-stage --keep-stage-std --src --jobs --warnings --error-format --json-output --color --bypass-bootstrap-lock --rust-profile-generate --rust-profile-use --llvm-profile-use --llvm-profile-generate --enable-bolt-settings --skip-stage0-validation --reproducible-artifact --set --help [PATHS]... [ARGS]..."
2768 if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then
2769 COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
2770 return 0
2771 fi
2772 case "${prev}" in
2773 --include)
2774 COMPREPLY=($(compgen -f "${cur}"))
2775 return 0
2776 ;;
2777 --exclude)
2778 COMPREPLY=($(compgen -f "${cur}"))
2779 return 0
2780 ;;
2781 --scenarios)
2782 COMPREPLY=($(compgen -W "Full IncrFull IncrUnchanged IncrPatched" -- "${cur}"))
2783 return 0
2784 ;;
2785 --profiles)
2786 COMPREPLY=($(compgen -W "Check Debug Doc Opt Clippy" -- "${cur}"))
2787 return 0
2788 ;;
2789 --config)
2790 local oldifs
2791 if [ -n "${IFS+x}" ]; then
2792 oldifs="$IFS"
2793 fi
2794 IFS=$'\n'
2795 COMPREPLY=($(compgen -f "${cur}"))
2796 if [ -n "${oldifs+x}" ]; then
2797 IFS="$oldifs"
2798 fi
2799 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
2800 compopt -o filenames
2801 fi
2802 return 0
2803 ;;
2804 --build-dir)
2805 COMPREPLY=()
2806 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
2807 compopt -o plusdirs
2808 fi
2809 return 0
2810 ;;
2811 --build)
2812 COMPREPLY=("${cur}")
2813 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
2814 compopt -o nospace
2815 fi
2816 return 0
2817 ;;
2818 --host)
2819 COMPREPLY=("${cur}")
2820 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
2821 compopt -o nospace
2822 fi
2823 return 0
2824 ;;
2825 --target)
2826 COMPREPLY=("${cur}")
2827 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
2828 compopt -o nospace
2829 fi
2830 return 0
2831 ;;
2832 --skip)
2833 COMPREPLY=($(compgen -f "${cur}"))
2834 return 0
2835 ;;
2836 --rustc-error-format)
2837 COMPREPLY=("${cur}")
2838 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
2839 compopt -o nospace
2840 fi
2841 return 0
2842 ;;
2843 --on-fail)
2844 COMPREPLY=($(compgen -f "${cur}"))
2845 return 0
2846 ;;
2847 --stage)
2848 COMPREPLY=("${cur}")
2849 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
2850 compopt -o nospace
2851 fi
2852 return 0
2853 ;;
2854 --keep-stage)
2855 COMPREPLY=("${cur}")
2856 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
2857 compopt -o nospace
2858 fi
2859 return 0
2860 ;;
2861 --keep-stage-std)
2862 COMPREPLY=("${cur}")
2863 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
2864 compopt -o nospace
2865 fi
2866 return 0
2867 ;;
2868 --src)
2869 COMPREPLY=()
2870 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
2871 compopt -o plusdirs
2872 fi
2873 return 0
2874 ;;
2875 --jobs)
2876 COMPREPLY=("${cur}")
2877 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
2878 compopt -o nospace
2879 fi
2880 return 0
2881 ;;
2882 -j)
2883 COMPREPLY=("${cur}")
2884 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
2885 compopt -o nospace
2886 fi
2887 return 0
2888 ;;
2889 --warnings)
2890 COMPREPLY=($(compgen -W "deny warn default" -- "${cur}"))
2891 return 0
2892 ;;
2893 --error-format)
2894 COMPREPLY=("${cur}")
2895 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
2896 compopt -o nospace
2897 fi
2898 return 0
2899 ;;
2900 --color)
2901 COMPREPLY=($(compgen -W "always never auto" -- "${cur}"))
2902 return 0
2903 ;;
2904 --rust-profile-generate)
2905 local oldifs
2906 if [ -n "${IFS+x}" ]; then
2907 oldifs="$IFS"
2908 fi
2909 IFS=$'\n'
2910 COMPREPLY=($(compgen -f "${cur}"))
2911 if [ -n "${oldifs+x}" ]; then
2912 IFS="$oldifs"
2913 fi
2914 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
2915 compopt -o filenames
2916 fi
2917 return 0
2918 ;;
2919 --rust-profile-use)
2920 local oldifs
2921 if [ -n "${IFS+x}" ]; then
2922 oldifs="$IFS"
2923 fi
2924 IFS=$'\n'
2925 COMPREPLY=($(compgen -f "${cur}"))
2926 if [ -n "${oldifs+x}" ]; then
2927 IFS="$oldifs"
2928 fi
2929 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
2930 compopt -o filenames
2931 fi
2932 return 0
2933 ;;
2934 --llvm-profile-use)
2935 local oldifs
2936 if [ -n "${IFS+x}" ]; then
2937 oldifs="$IFS"
2938 fi
2939 IFS=$'\n'
2940 COMPREPLY=($(compgen -f "${cur}"))
2941 if [ -n "${oldifs+x}" ]; then
2942 IFS="$oldifs"
2943 fi
2944 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
2945 compopt -o filenames
2946 fi
2947 return 0
2948 ;;
2949 --reproducible-artifact)
2950 COMPREPLY=($(compgen -f "${cur}"))
2951 return 0
2952 ;;
2953 --set)
2954 COMPREPLY=("${cur}")
2955 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
2956 compopt -o nospace
2957 fi
2958 return 0
2959 ;;
2960 *)
2961 COMPREPLY=()
2962 ;;
2963 esac
2964 COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
2965 return 0
2966 ;;
2967 x__perf__compare)
2968 opts="-v -i -j -h --verbose --incremental --config --build-dir --build --host --target --exclude --skip --include-default-paths --rustc-error-format --on-fail --dry-run --dump-bootstrap-shims --stage --keep-stage --keep-stage-std --src --jobs --warnings --error-format --json-output --color --bypass-bootstrap-lock --rust-profile-generate --rust-profile-use --llvm-profile-use --llvm-profile-generate --enable-bolt-settings --skip-stage0-validation --reproducible-artifact --set --help <BASE> <MODIFIED> [PATHS]... [ARGS]..."
2969 if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then
2970 COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
2971 return 0
2972 fi
2973 case "${prev}" in
2974 --config)
2975 local oldifs
2976 if [ -n "${IFS+x}" ]; then
2977 oldifs="$IFS"
2978 fi
2979 IFS=$'\n'
2980 COMPREPLY=($(compgen -f "${cur}"))
2981 if [ -n "${oldifs+x}" ]; then
2982 IFS="$oldifs"
2983 fi
2984 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
2985 compopt -o filenames
2986 fi
2987 return 0
2988 ;;
2989 --build-dir)
2990 COMPREPLY=()
2991 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
2992 compopt -o plusdirs
2993 fi
2994 return 0
2995 ;;
2996 --build)
2997 COMPREPLY=("${cur}")
2998 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
2999 compopt -o nospace
3000 fi
3001 return 0
3002 ;;
3003 --host)
3004 COMPREPLY=("${cur}")
3005 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
3006 compopt -o nospace
3007 fi
3008 return 0
3009 ;;
3010 --target)
3011 COMPREPLY=("${cur}")
3012 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
3013 compopt -o nospace
3014 fi
3015 return 0
3016 ;;
3017 --exclude)
3018 COMPREPLY=($(compgen -f "${cur}"))
3019 return 0
3020 ;;
3021 --skip)
3022 COMPREPLY=($(compgen -f "${cur}"))
3023 return 0
3024 ;;
3025 --rustc-error-format)
3026 COMPREPLY=("${cur}")
3027 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
3028 compopt -o nospace
3029 fi
3030 return 0
3031 ;;
3032 --on-fail)
3033 COMPREPLY=($(compgen -f "${cur}"))
3034 return 0
3035 ;;
3036 --stage)
3037 COMPREPLY=("${cur}")
3038 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
3039 compopt -o nospace
3040 fi
3041 return 0
3042 ;;
3043 --keep-stage)
3044 COMPREPLY=("${cur}")
3045 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
3046 compopt -o nospace
3047 fi
3048 return 0
3049 ;;
3050 --keep-stage-std)
3051 COMPREPLY=("${cur}")
3052 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
3053 compopt -o nospace
3054 fi
3055 return 0
3056 ;;
3057 --src)
3058 COMPREPLY=()
3059 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
3060 compopt -o plusdirs
3061 fi
3062 return 0
3063 ;;
3064 --jobs)
3065 COMPREPLY=("${cur}")
3066 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
3067 compopt -o nospace
3068 fi
3069 return 0
3070 ;;
3071 -j)
3072 COMPREPLY=("${cur}")
3073 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
3074 compopt -o nospace
3075 fi
3076 return 0
3077 ;;
3078 --warnings)
3079 COMPREPLY=($(compgen -W "deny warn default" -- "${cur}"))
3080 return 0
3081 ;;
3082 --error-format)
3083 COMPREPLY=("${cur}")
3084 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
3085 compopt -o nospace
3086 fi
3087 return 0
3088 ;;
3089 --color)
3090 COMPREPLY=($(compgen -W "always never auto" -- "${cur}"))
3091 return 0
3092 ;;
3093 --rust-profile-generate)
3094 local oldifs
3095 if [ -n "${IFS+x}" ]; then
3096 oldifs="$IFS"
3097 fi
3098 IFS=$'\n'
3099 COMPREPLY=($(compgen -f "${cur}"))
3100 if [ -n "${oldifs+x}" ]; then
3101 IFS="$oldifs"
3102 fi
3103 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
3104 compopt -o filenames
3105 fi
3106 return 0
3107 ;;
3108 --rust-profile-use)
3109 local oldifs
3110 if [ -n "${IFS+x}" ]; then
3111 oldifs="$IFS"
3112 fi
3113 IFS=$'\n'
3114 COMPREPLY=($(compgen -f "${cur}"))
3115 if [ -n "${oldifs+x}" ]; then
3116 IFS="$oldifs"
3117 fi
3118 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
3119 compopt -o filenames
3120 fi
3121 return 0
3122 ;;
3123 --llvm-profile-use)
3124 local oldifs
3125 if [ -n "${IFS+x}" ]; then
3126 oldifs="$IFS"
3127 fi
3128 IFS=$'\n'
3129 COMPREPLY=($(compgen -f "${cur}"))
3130 if [ -n "${oldifs+x}" ]; then
3131 IFS="$oldifs"
3132 fi
3133 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
3134 compopt -o filenames
3135 fi
3136 return 0
3137 ;;
3138 --reproducible-artifact)
3139 COMPREPLY=($(compgen -f "${cur}"))
3140 return 0
3141 ;;
3142 --set)
3143 COMPREPLY=("${cur}")
3144 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
3145 compopt -o nospace
3146 fi
3147 return 0
3148 ;;
3149 *)
3150 COMPREPLY=()
3151 ;;
3152 esac
3153 COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
3154 return 0
3155 ;;
3156 x__perf__eprintln)
3157 opts="-v -i -j -h --include --exclude --scenarios --profiles --verbose --incremental --config --build-dir --build --host --target --skip --include-default-paths --rustc-error-format --on-fail --dry-run --dump-bootstrap-shims --stage --keep-stage --keep-stage-std --src --jobs --warnings --error-format --json-output --color --bypass-bootstrap-lock --rust-profile-generate --rust-profile-use --llvm-profile-use --llvm-profile-generate --enable-bolt-settings --skip-stage0-validation --reproducible-artifact --set --help [PATHS]... [ARGS]..."
3158 if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then
3159 COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
3160 return 0
3161 fi
3162 case "${prev}" in
3163 --include)
3164 COMPREPLY=($(compgen -f "${cur}"))
3165 return 0
3166 ;;
3167 --exclude)
3168 COMPREPLY=($(compgen -f "${cur}"))
3169 return 0
3170 ;;
3171 --scenarios)
3172 COMPREPLY=($(compgen -W "Full IncrFull IncrUnchanged IncrPatched" -- "${cur}"))
3173 return 0
3174 ;;
3175 --profiles)
3176 COMPREPLY=($(compgen -W "Check Debug Doc Opt Clippy" -- "${cur}"))
3177 return 0
3178 ;;
3179 --config)
3180 local oldifs
3181 if [ -n "${IFS+x}" ]; then
3182 oldifs="$IFS"
3183 fi
3184 IFS=$'\n'
3185 COMPREPLY=($(compgen -f "${cur}"))
3186 if [ -n "${oldifs+x}" ]; then
3187 IFS="$oldifs"
3188 fi
3189 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
3190 compopt -o filenames
3191 fi
3192 return 0
3193 ;;
3194 --build-dir)
3195 COMPREPLY=()
3196 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
3197 compopt -o plusdirs
3198 fi
3199 return 0
3200 ;;
3201 --build)
3202 COMPREPLY=("${cur}")
3203 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
3204 compopt -o nospace
3205 fi
3206 return 0
3207 ;;
3208 --host)
3209 COMPREPLY=("${cur}")
3210 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
3211 compopt -o nospace
3212 fi
3213 return 0
3214 ;;
3215 --target)
3216 COMPREPLY=("${cur}")
3217 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
3218 compopt -o nospace
3219 fi
3220 return 0
3221 ;;
3222 --skip)
3223 COMPREPLY=($(compgen -f "${cur}"))
3224 return 0
3225 ;;
3226 --rustc-error-format)
3227 COMPREPLY=("${cur}")
3228 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
3229 compopt -o nospace
3230 fi
3231 return 0
3232 ;;
3233 --on-fail)
3234 COMPREPLY=($(compgen -f "${cur}"))
3235 return 0
3236 ;;
3237 --stage)
3238 COMPREPLY=("${cur}")
3239 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
3240 compopt -o nospace
3241 fi
3242 return 0
3243 ;;
3244 --keep-stage)
3245 COMPREPLY=("${cur}")
3246 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
3247 compopt -o nospace
3248 fi
3249 return 0
3250 ;;
3251 --keep-stage-std)
3252 COMPREPLY=("${cur}")
3253 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
3254 compopt -o nospace
3255 fi
3256 return 0
3257 ;;
3258 --src)
3259 COMPREPLY=()
3260 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
3261 compopt -o plusdirs
3262 fi
3263 return 0
3264 ;;
3265 --jobs)
3266 COMPREPLY=("${cur}")
3267 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
3268 compopt -o nospace
3269 fi
3270 return 0
3271 ;;
3272 -j)
3273 COMPREPLY=("${cur}")
3274 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
3275 compopt -o nospace
3276 fi
3277 return 0
3278 ;;
3279 --warnings)
3280 COMPREPLY=($(compgen -W "deny warn default" -- "${cur}"))
3281 return 0
3282 ;;
3283 --error-format)
3284 COMPREPLY=("${cur}")
3285 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
3286 compopt -o nospace
3287 fi
3288 return 0
3289 ;;
3290 --color)
3291 COMPREPLY=($(compgen -W "always never auto" -- "${cur}"))
3292 return 0
3293 ;;
3294 --rust-profile-generate)
3295 local oldifs
3296 if [ -n "${IFS+x}" ]; then
3297 oldifs="$IFS"
3298 fi
3299 IFS=$'\n'
3300 COMPREPLY=($(compgen -f "${cur}"))
3301 if [ -n "${oldifs+x}" ]; then
3302 IFS="$oldifs"
3303 fi
3304 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
3305 compopt -o filenames
3306 fi
3307 return 0
3308 ;;
3309 --rust-profile-use)
3310 local oldifs
3311 if [ -n "${IFS+x}" ]; then
3312 oldifs="$IFS"
3313 fi
3314 IFS=$'\n'
3315 COMPREPLY=($(compgen -f "${cur}"))
3316 if [ -n "${oldifs+x}" ]; then
3317 IFS="$oldifs"
3318 fi
3319 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
3320 compopt -o filenames
3321 fi
3322 return 0
3323 ;;
3324 --llvm-profile-use)
3325 local oldifs
3326 if [ -n "${IFS+x}" ]; then
3327 oldifs="$IFS"
3328 fi
3329 IFS=$'\n'
3330 COMPREPLY=($(compgen -f "${cur}"))
3331 if [ -n "${oldifs+x}" ]; then
3332 IFS="$oldifs"
3333 fi
3334 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
3335 compopt -o filenames
3336 fi
3337 return 0
3338 ;;
3339 --reproducible-artifact)
3340 COMPREPLY=($(compgen -f "${cur}"))
3341 return 0
3342 ;;
3343 --set)
3344 COMPREPLY=("${cur}")
3345 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
3346 compopt -o nospace
3347 fi
3348 return 0
3349 ;;
3350 *)
3351 COMPREPLY=()
3352 ;;
3353 esac
3354 COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
3355 return 0
3356 ;;
3357 x__perf__samply)
3358 opts="-v -i -j -h --include --exclude --scenarios --profiles --verbose --incremental --config --build-dir --build --host --target --skip --include-default-paths --rustc-error-format --on-fail --dry-run --dump-bootstrap-shims --stage --keep-stage --keep-stage-std --src --jobs --warnings --error-format --json-output --color --bypass-bootstrap-lock --rust-profile-generate --rust-profile-use --llvm-profile-use --llvm-profile-generate --enable-bolt-settings --skip-stage0-validation --reproducible-artifact --set --help [PATHS]... [ARGS]..."
3359 if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then
3360 COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
3361 return 0
3362 fi
3363 case "${prev}" in
3364 --include)
3365 COMPREPLY=($(compgen -f "${cur}"))
3366 return 0
3367 ;;
3368 --exclude)
3369 COMPREPLY=($(compgen -f "${cur}"))
3370 return 0
3371 ;;
3372 --scenarios)
3373 COMPREPLY=($(compgen -W "Full IncrFull IncrUnchanged IncrPatched" -- "${cur}"))
3374 return 0
3375 ;;
3376 --profiles)
3377 COMPREPLY=($(compgen -W "Check Debug Doc Opt Clippy" -- "${cur}"))
3378 return 0
3379 ;;
3380 --config)
3381 local oldifs
3382 if [ -n "${IFS+x}" ]; then
3383 oldifs="$IFS"
3384 fi
3385 IFS=$'\n'
3386 COMPREPLY=($(compgen -f "${cur}"))
3387 if [ -n "${oldifs+x}" ]; then
3388 IFS="$oldifs"
3389 fi
3390 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
3391 compopt -o filenames
3392 fi
3393 return 0
3394 ;;
3395 --build-dir)
3396 COMPREPLY=()
3397 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
3398 compopt -o plusdirs
3399 fi
3400 return 0
3401 ;;
3402 --build)
3403 COMPREPLY=("${cur}")
3404 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
3405 compopt -o nospace
3406 fi
3407 return 0
3408 ;;
3409 --host)
3410 COMPREPLY=("${cur}")
3411 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
3412 compopt -o nospace
3413 fi
3414 return 0
3415 ;;
3416 --target)
3417 COMPREPLY=("${cur}")
3418 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
3419 compopt -o nospace
3420 fi
3421 return 0
3422 ;;
3423 --skip)
3424 COMPREPLY=($(compgen -f "${cur}"))
3425 return 0
3426 ;;
3427 --rustc-error-format)
3428 COMPREPLY=("${cur}")
3429 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
3430 compopt -o nospace
3431 fi
3432 return 0
3433 ;;
3434 --on-fail)
3435 COMPREPLY=($(compgen -f "${cur}"))
3436 return 0
3437 ;;
3438 --stage)
3439 COMPREPLY=("${cur}")
3440 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
3441 compopt -o nospace
3442 fi
3443 return 0
3444 ;;
3445 --keep-stage)
3446 COMPREPLY=("${cur}")
3447 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
3448 compopt -o nospace
3449 fi
3450 return 0
3451 ;;
3452 --keep-stage-std)
3453 COMPREPLY=("${cur}")
3454 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
3455 compopt -o nospace
3456 fi
3457 return 0
3458 ;;
3459 --src)
3460 COMPREPLY=()
3461 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
3462 compopt -o plusdirs
3463 fi
3464 return 0
3465 ;;
3466 --jobs)
3467 COMPREPLY=("${cur}")
3468 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
3469 compopt -o nospace
3470 fi
3471 return 0
3472 ;;
3473 -j)
3474 COMPREPLY=("${cur}")
3475 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
3476 compopt -o nospace
3477 fi
3478 return 0
3479 ;;
3480 --warnings)
3481 COMPREPLY=($(compgen -W "deny warn default" -- "${cur}"))
3482 return 0
3483 ;;
3484 --error-format)
3485 COMPREPLY=("${cur}")
3486 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
3487 compopt -o nospace
3488 fi
3489 return 0
3490 ;;
3491 --color)
3492 COMPREPLY=($(compgen -W "always never auto" -- "${cur}"))
3493 return 0
3494 ;;
3495 --rust-profile-generate)
3496 local oldifs
3497 if [ -n "${IFS+x}" ]; then
3498 oldifs="$IFS"
3499 fi
3500 IFS=$'\n'
3501 COMPREPLY=($(compgen -f "${cur}"))
3502 if [ -n "${oldifs+x}" ]; then
3503 IFS="$oldifs"
3504 fi
3505 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
3506 compopt -o filenames
3507 fi
3508 return 0
3509 ;;
3510 --rust-profile-use)
3511 local oldifs
3512 if [ -n "${IFS+x}" ]; then
3513 oldifs="$IFS"
3514 fi
3515 IFS=$'\n'
3516 COMPREPLY=($(compgen -f "${cur}"))
3517 if [ -n "${oldifs+x}" ]; then
3518 IFS="$oldifs"
3519 fi
3520 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
3521 compopt -o filenames
3522 fi
3523 return 0
3524 ;;
3525 --llvm-profile-use)
3526 local oldifs
3527 if [ -n "${IFS+x}" ]; then
3528 oldifs="$IFS"
3529 fi
3530 IFS=$'\n'
3531 COMPREPLY=($(compgen -f "${cur}"))
3532 if [ -n "${oldifs+x}" ]; then
3533 IFS="$oldifs"
3534 fi
3535 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
3536 compopt -o filenames
3537 fi
3538 return 0
3539 ;;
3540 --reproducible-artifact)
3541 COMPREPLY=($(compgen -f "${cur}"))
3542 return 0
3543 ;;
3544 --set)
3545 COMPREPLY=("${cur}")
3546 if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
3547 compopt -o nospace
3548 fi
3549 return 0
3550 ;;
3551 *)
3552 COMPREPLY=()
3553 ;;
3554 esac
3555 COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
3556 return 0
3557 ;;
25503558 x__run)
25513559 opts="-v -i -j -h --args --verbose --incremental --config --build-dir --build --host --target --exclude --skip --include-default-paths --rustc-error-format --on-fail --dry-run --dump-bootstrap-shims --stage --keep-stage --keep-stage-std --src --jobs --warnings --error-format --json-output --color --bypass-bootstrap-lock --rust-profile-generate --rust-profile-use --llvm-profile-use --llvm-profile-generate --enable-bolt-settings --skip-stage0-validation --reproducible-artifact --set --help [PATHS]... [ARGS]..."
25523560 if [[ ${cur} == -* || ${COMP_CWORD} -eq 2 ]] ; then
src/etc/completions/x.zsh+271-2
......@@ -811,8 +811,246 @@ _arguments "${_arguments_options[@]}" : \
811811'--skip-stage0-validation[Skip stage0 compiler validation]' \
812812'-h[Print help (see more with '\''--help'\'')]' \
813813'--help[Print help (see more with '\''--help'\'')]' \
814'::paths -- paths for the subcommand:_files' \
815'::free_args -- arguments passed to subcommands:_default' \
816":: :_x__perf_commands" \
817"*::: :->perf" \
818&& ret=0
819
820 case $state in
821 (perf)
822 words=($line[3] "${words[@]}")
823 (( CURRENT += 1 ))
824 curcontext="${curcontext%:*:*}:x-perf-command-$line[3]:"
825 case $line[3] in
826 (eprintln)
827_arguments "${_arguments_options[@]}" : \
828'*--include=[Select the benchmarks that you want to run (separated by commas). If unspecified, all benchmarks will be executed]:INCLUDE:_default' \
829'*--exclude=[Select the benchmarks matching a prefix in this comma-separated list that you don'\''t want to run]:EXCLUDE:_default' \
830'*--scenarios=[Select the scenarios that should be benchmarked]:SCENARIOS:(Full IncrFull IncrUnchanged IncrPatched)' \
831'*--profiles=[Select the profiles that should be benchmarked]:PROFILES:(Check Debug Doc Opt Clippy)' \
832'--config=[TOML configuration file for build]:FILE:_files' \
833'--build-dir=[Build directory, overrides \`build.build-dir\` in \`config.toml\`]:DIR:_files -/' \
834'--build=[build target of the stage0 compiler]:BUILD:' \
835'--host=[host targets to build]:HOST:' \
836'--target=[target targets to build]:TARGET:' \
837'*--skip=[build paths to skip]:PATH:_files' \
838'--rustc-error-format=[]:RUSTC_ERROR_FORMAT:' \
839'--on-fail=[command to run on failure]:CMD:_cmdstring' \
840'--stage=[stage to build (indicates compiler to use/test, e.g., stage 0 uses the bootstrap compiler, stage 1 the stage 0 rustc artifacts, etc.)]:N:' \
841'*--keep-stage=[stage(s) to keep without recompiling (pass multiple times to keep e.g., both stages 0 and 1)]:N:' \
842'*--keep-stage-std=[stage(s) of the standard library to keep without recompiling (pass multiple times to keep e.g., both stages 0 and 1)]:N:' \
843'--src=[path to the root of the rust checkout]:DIR:_files -/' \
844'-j+[number of jobs to run in parallel]:JOBS:' \
845'--jobs=[number of jobs to run in parallel]:JOBS:' \
846'--warnings=[if value is deny, will deny warnings if value is warn, will emit warnings otherwise, use the default configured behaviour]:deny|warn:(deny warn default)' \
847'--error-format=[rustc error format]:FORMAT:' \
848'--color=[whether to use color in cargo and rustc output]:STYLE:(always never auto)' \
849'--rust-profile-generate=[generate PGO profile with rustc build]:PROFILE:_files' \
850'--rust-profile-use=[use PGO profile for rustc build]:PROFILE:_files' \
851'--llvm-profile-use=[use PGO profile for LLVM build]:PROFILE:_files' \
852'*--reproducible-artifact=[Additional reproducible artifacts that should be added to the reproducible artifacts archive]:REPRODUCIBLE_ARTIFACT:_default' \
853'*--set=[override options in config.toml]:section.option=value:' \
854'*-v[use verbose output (-vv for very verbose)]' \
855'*--verbose[use verbose output (-vv for very verbose)]' \
856'-i[use incremental compilation]' \
857'--incremental[use incremental compilation]' \
858'--include-default-paths[include default paths in addition to the provided ones]' \
859'--dry-run[dry run; don'\''t build anything]' \
860'--dump-bootstrap-shims[Indicates whether to dump the work done from bootstrap shims]' \
861'--json-output[use message-format=json]' \
862'--bypass-bootstrap-lock[Bootstrap uses this value to decide whether it should bypass locking the build process. This is rarely needed (e.g., compiling the std library for different targets in parallel)]' \
863'--llvm-profile-generate[generate PGO profile with llvm built for rustc]' \
864'--enable-bolt-settings[Enable BOLT link flags]' \
865'--skip-stage0-validation[Skip stage0 compiler validation]' \
866'-h[Print help (see more with '\''--help'\'')]' \
867'--help[Print help (see more with '\''--help'\'')]' \
868'*::paths -- paths for the subcommand:_files' \
869&& ret=0
870;;
871(samply)
872_arguments "${_arguments_options[@]}" : \
873'*--include=[Select the benchmarks that you want to run (separated by commas). If unspecified, all benchmarks will be executed]:INCLUDE:_default' \
874'*--exclude=[Select the benchmarks matching a prefix in this comma-separated list that you don'\''t want to run]:EXCLUDE:_default' \
875'*--scenarios=[Select the scenarios that should be benchmarked]:SCENARIOS:(Full IncrFull IncrUnchanged IncrPatched)' \
876'*--profiles=[Select the profiles that should be benchmarked]:PROFILES:(Check Debug Doc Opt Clippy)' \
877'--config=[TOML configuration file for build]:FILE:_files' \
878'--build-dir=[Build directory, overrides \`build.build-dir\` in \`config.toml\`]:DIR:_files -/' \
879'--build=[build target of the stage0 compiler]:BUILD:' \
880'--host=[host targets to build]:HOST:' \
881'--target=[target targets to build]:TARGET:' \
882'*--skip=[build paths to skip]:PATH:_files' \
883'--rustc-error-format=[]:RUSTC_ERROR_FORMAT:' \
884'--on-fail=[command to run on failure]:CMD:_cmdstring' \
885'--stage=[stage to build (indicates compiler to use/test, e.g., stage 0 uses the bootstrap compiler, stage 1 the stage 0 rustc artifacts, etc.)]:N:' \
886'*--keep-stage=[stage(s) to keep without recompiling (pass multiple times to keep e.g., both stages 0 and 1)]:N:' \
887'*--keep-stage-std=[stage(s) of the standard library to keep without recompiling (pass multiple times to keep e.g., both stages 0 and 1)]:N:' \
888'--src=[path to the root of the rust checkout]:DIR:_files -/' \
889'-j+[number of jobs to run in parallel]:JOBS:' \
890'--jobs=[number of jobs to run in parallel]:JOBS:' \
891'--warnings=[if value is deny, will deny warnings if value is warn, will emit warnings otherwise, use the default configured behaviour]:deny|warn:(deny warn default)' \
892'--error-format=[rustc error format]:FORMAT:' \
893'--color=[whether to use color in cargo and rustc output]:STYLE:(always never auto)' \
894'--rust-profile-generate=[generate PGO profile with rustc build]:PROFILE:_files' \
895'--rust-profile-use=[use PGO profile for rustc build]:PROFILE:_files' \
896'--llvm-profile-use=[use PGO profile for LLVM build]:PROFILE:_files' \
897'*--reproducible-artifact=[Additional reproducible artifacts that should be added to the reproducible artifacts archive]:REPRODUCIBLE_ARTIFACT:_default' \
898'*--set=[override options in config.toml]:section.option=value:' \
899'*-v[use verbose output (-vv for very verbose)]' \
900'*--verbose[use verbose output (-vv for very verbose)]' \
901'-i[use incremental compilation]' \
902'--incremental[use incremental compilation]' \
903'--include-default-paths[include default paths in addition to the provided ones]' \
904'--dry-run[dry run; don'\''t build anything]' \
905'--dump-bootstrap-shims[Indicates whether to dump the work done from bootstrap shims]' \
906'--json-output[use message-format=json]' \
907'--bypass-bootstrap-lock[Bootstrap uses this value to decide whether it should bypass locking the build process. This is rarely needed (e.g., compiling the std library for different targets in parallel)]' \
908'--llvm-profile-generate[generate PGO profile with llvm built for rustc]' \
909'--enable-bolt-settings[Enable BOLT link flags]' \
910'--skip-stage0-validation[Skip stage0 compiler validation]' \
911'-h[Print help (see more with '\''--help'\'')]' \
912'--help[Print help (see more with '\''--help'\'')]' \
814913'*::paths -- paths for the subcommand:_files' \
815914&& ret=0
915;;
916(cachegrind)
917_arguments "${_arguments_options[@]}" : \
918'*--include=[Select the benchmarks that you want to run (separated by commas). If unspecified, all benchmarks will be executed]:INCLUDE:_default' \
919'*--exclude=[Select the benchmarks matching a prefix in this comma-separated list that you don'\''t want to run]:EXCLUDE:_default' \
920'*--scenarios=[Select the scenarios that should be benchmarked]:SCENARIOS:(Full IncrFull IncrUnchanged IncrPatched)' \
921'*--profiles=[Select the profiles that should be benchmarked]:PROFILES:(Check Debug Doc Opt Clippy)' \
922'--config=[TOML configuration file for build]:FILE:_files' \
923'--build-dir=[Build directory, overrides \`build.build-dir\` in \`config.toml\`]:DIR:_files -/' \
924'--build=[build target of the stage0 compiler]:BUILD:' \
925'--host=[host targets to build]:HOST:' \
926'--target=[target targets to build]:TARGET:' \
927'*--skip=[build paths to skip]:PATH:_files' \
928'--rustc-error-format=[]:RUSTC_ERROR_FORMAT:' \
929'--on-fail=[command to run on failure]:CMD:_cmdstring' \
930'--stage=[stage to build (indicates compiler to use/test, e.g., stage 0 uses the bootstrap compiler, stage 1 the stage 0 rustc artifacts, etc.)]:N:' \
931'*--keep-stage=[stage(s) to keep without recompiling (pass multiple times to keep e.g., both stages 0 and 1)]:N:' \
932'*--keep-stage-std=[stage(s) of the standard library to keep without recompiling (pass multiple times to keep e.g., both stages 0 and 1)]:N:' \
933'--src=[path to the root of the rust checkout]:DIR:_files -/' \
934'-j+[number of jobs to run in parallel]:JOBS:' \
935'--jobs=[number of jobs to run in parallel]:JOBS:' \
936'--warnings=[if value is deny, will deny warnings if value is warn, will emit warnings otherwise, use the default configured behaviour]:deny|warn:(deny warn default)' \
937'--error-format=[rustc error format]:FORMAT:' \
938'--color=[whether to use color in cargo and rustc output]:STYLE:(always never auto)' \
939'--rust-profile-generate=[generate PGO profile with rustc build]:PROFILE:_files' \
940'--rust-profile-use=[use PGO profile for rustc build]:PROFILE:_files' \
941'--llvm-profile-use=[use PGO profile for LLVM build]:PROFILE:_files' \
942'*--reproducible-artifact=[Additional reproducible artifacts that should be added to the reproducible artifacts archive]:REPRODUCIBLE_ARTIFACT:_default' \
943'*--set=[override options in config.toml]:section.option=value:' \
944'*-v[use verbose output (-vv for very verbose)]' \
945'*--verbose[use verbose output (-vv for very verbose)]' \
946'-i[use incremental compilation]' \
947'--incremental[use incremental compilation]' \
948'--include-default-paths[include default paths in addition to the provided ones]' \
949'--dry-run[dry run; don'\''t build anything]' \
950'--dump-bootstrap-shims[Indicates whether to dump the work done from bootstrap shims]' \
951'--json-output[use message-format=json]' \
952'--bypass-bootstrap-lock[Bootstrap uses this value to decide whether it should bypass locking the build process. This is rarely needed (e.g., compiling the std library for different targets in parallel)]' \
953'--llvm-profile-generate[generate PGO profile with llvm built for rustc]' \
954'--enable-bolt-settings[Enable BOLT link flags]' \
955'--skip-stage0-validation[Skip stage0 compiler validation]' \
956'-h[Print help (see more with '\''--help'\'')]' \
957'--help[Print help (see more with '\''--help'\'')]' \
958'*::paths -- paths for the subcommand:_files' \
959&& ret=0
960;;
961(benchmark)
962_arguments "${_arguments_options[@]}" : \
963'*--include=[Select the benchmarks that you want to run (separated by commas). If unspecified, all benchmarks will be executed]:INCLUDE:_default' \
964'*--exclude=[Select the benchmarks matching a prefix in this comma-separated list that you don'\''t want to run]:EXCLUDE:_default' \
965'*--scenarios=[Select the scenarios that should be benchmarked]:SCENARIOS:(Full IncrFull IncrUnchanged IncrPatched)' \
966'*--profiles=[Select the profiles that should be benchmarked]:PROFILES:(Check Debug Doc Opt Clippy)' \
967'--config=[TOML configuration file for build]:FILE:_files' \
968'--build-dir=[Build directory, overrides \`build.build-dir\` in \`config.toml\`]:DIR:_files -/' \
969'--build=[build target of the stage0 compiler]:BUILD:' \
970'--host=[host targets to build]:HOST:' \
971'--target=[target targets to build]:TARGET:' \
972'*--skip=[build paths to skip]:PATH:_files' \
973'--rustc-error-format=[]:RUSTC_ERROR_FORMAT:' \
974'--on-fail=[command to run on failure]:CMD:_cmdstring' \
975'--stage=[stage to build (indicates compiler to use/test, e.g., stage 0 uses the bootstrap compiler, stage 1 the stage 0 rustc artifacts, etc.)]:N:' \
976'*--keep-stage=[stage(s) to keep without recompiling (pass multiple times to keep e.g., both stages 0 and 1)]:N:' \
977'*--keep-stage-std=[stage(s) of the standard library to keep without recompiling (pass multiple times to keep e.g., both stages 0 and 1)]:N:' \
978'--src=[path to the root of the rust checkout]:DIR:_files -/' \
979'-j+[number of jobs to run in parallel]:JOBS:' \
980'--jobs=[number of jobs to run in parallel]:JOBS:' \
981'--warnings=[if value is deny, will deny warnings if value is warn, will emit warnings otherwise, use the default configured behaviour]:deny|warn:(deny warn default)' \
982'--error-format=[rustc error format]:FORMAT:' \
983'--color=[whether to use color in cargo and rustc output]:STYLE:(always never auto)' \
984'--rust-profile-generate=[generate PGO profile with rustc build]:PROFILE:_files' \
985'--rust-profile-use=[use PGO profile for rustc build]:PROFILE:_files' \
986'--llvm-profile-use=[use PGO profile for LLVM build]:PROFILE:_files' \
987'*--reproducible-artifact=[Additional reproducible artifacts that should be added to the reproducible artifacts archive]:REPRODUCIBLE_ARTIFACT:_default' \
988'*--set=[override options in config.toml]:section.option=value:' \
989'*-v[use verbose output (-vv for very verbose)]' \
990'*--verbose[use verbose output (-vv for very verbose)]' \
991'-i[use incremental compilation]' \
992'--incremental[use incremental compilation]' \
993'--include-default-paths[include default paths in addition to the provided ones]' \
994'--dry-run[dry run; don'\''t build anything]' \
995'--dump-bootstrap-shims[Indicates whether to dump the work done from bootstrap shims]' \
996'--json-output[use message-format=json]' \
997'--bypass-bootstrap-lock[Bootstrap uses this value to decide whether it should bypass locking the build process. This is rarely needed (e.g., compiling the std library for different targets in parallel)]' \
998'--llvm-profile-generate[generate PGO profile with llvm built for rustc]' \
999'--enable-bolt-settings[Enable BOLT link flags]' \
1000'--skip-stage0-validation[Skip stage0 compiler validation]' \
1001'-h[Print help (see more with '\''--help'\'')]' \
1002'--help[Print help (see more with '\''--help'\'')]' \
1003':benchmark-id -- Identifier to associate benchmark results with:_default' \
1004'*::paths -- paths for the subcommand:_files' \
1005&& ret=0
1006;;
1007(compare)
1008_arguments "${_arguments_options[@]}" : \
1009'--config=[TOML configuration file for build]:FILE:_files' \
1010'--build-dir=[Build directory, overrides \`build.build-dir\` in \`config.toml\`]:DIR:_files -/' \
1011'--build=[build target of the stage0 compiler]:BUILD:' \
1012'--host=[host targets to build]:HOST:' \
1013'--target=[target targets to build]:TARGET:' \
1014'*--exclude=[build paths to exclude]:PATH:_files' \
1015'*--skip=[build paths to skip]:PATH:_files' \
1016'--rustc-error-format=[]:RUSTC_ERROR_FORMAT:' \
1017'--on-fail=[command to run on failure]:CMD:_cmdstring' \
1018'--stage=[stage to build (indicates compiler to use/test, e.g., stage 0 uses the bootstrap compiler, stage 1 the stage 0 rustc artifacts, etc.)]:N:' \
1019'*--keep-stage=[stage(s) to keep without recompiling (pass multiple times to keep e.g., both stages 0 and 1)]:N:' \
1020'*--keep-stage-std=[stage(s) of the standard library to keep without recompiling (pass multiple times to keep e.g., both stages 0 and 1)]:N:' \
1021'--src=[path to the root of the rust checkout]:DIR:_files -/' \
1022'-j+[number of jobs to run in parallel]:JOBS:' \
1023'--jobs=[number of jobs to run in parallel]:JOBS:' \
1024'--warnings=[if value is deny, will deny warnings if value is warn, will emit warnings otherwise, use the default configured behaviour]:deny|warn:(deny warn default)' \
1025'--error-format=[rustc error format]:FORMAT:' \
1026'--color=[whether to use color in cargo and rustc output]:STYLE:(always never auto)' \
1027'--rust-profile-generate=[generate PGO profile with rustc build]:PROFILE:_files' \
1028'--rust-profile-use=[use PGO profile for rustc build]:PROFILE:_files' \
1029'--llvm-profile-use=[use PGO profile for LLVM build]:PROFILE:_files' \
1030'*--reproducible-artifact=[Additional reproducible artifacts that should be added to the reproducible artifacts archive]:REPRODUCIBLE_ARTIFACT:_default' \
1031'*--set=[override options in config.toml]:section.option=value:' \
1032'*-v[use verbose output (-vv for very verbose)]' \
1033'*--verbose[use verbose output (-vv for very verbose)]' \
1034'-i[use incremental compilation]' \
1035'--incremental[use incremental compilation]' \
1036'--include-default-paths[include default paths in addition to the provided ones]' \
1037'--dry-run[dry run; don'\''t build anything]' \
1038'--dump-bootstrap-shims[Indicates whether to dump the work done from bootstrap shims]' \
1039'--json-output[use message-format=json]' \
1040'--bypass-bootstrap-lock[Bootstrap uses this value to decide whether it should bypass locking the build process. This is rarely needed (e.g., compiling the std library for different targets in parallel)]' \
1041'--llvm-profile-generate[generate PGO profile with llvm built for rustc]' \
1042'--enable-bolt-settings[Enable BOLT link flags]' \
1043'--skip-stage0-validation[Skip stage0 compiler validation]' \
1044'-h[Print help (see more with '\''--help'\'')]' \
1045'--help[Print help (see more with '\''--help'\'')]' \
1046':base -- The name of the base artifact to be compared:_default' \
1047':modified -- The name of the modified artifact to be compared:_default' \
1048'*::paths -- paths for the subcommand:_files' \
1049&& ret=0
1050;;
1051 esac
1052 ;;
1053esac
8161054;;
8171055 esac
8181056 ;;
......@@ -838,7 +1076,7 @@ _x_commands() {
8381076'setup:Set up the environment for development' \
8391077'suggest:Suggest a subset of tests to run, based on modified files' \
8401078'vendor:Vendor dependencies' \
841'perf:Perform profiling and benchmarking of the compiler using the \`rustc-perf-wrapper\` tool' \
1079'perf:Perform profiling and benchmarking of the compiler using \`rustc-perf\`' \
8421080 )
8431081 _describe -t commands 'x commands' commands "$@"
8441082}
......@@ -899,9 +1137,40 @@ _x__miri_commands() {
8991137}
9001138(( $+functions[_x__perf_commands] )) ||
9011139_x__perf_commands() {
902 local commands; commands=()
1140 local commands; commands=(
1141'eprintln:Run \`profile_local eprintln\`. This executes the compiler on the given benchmarks and stores its stderr output' \
1142'samply:Run \`profile_local samply\` This executes the compiler on the given benchmarks and profiles it with \`samply\`. You need to install \`samply\`, e.g. using \`cargo install samply\`' \
1143'cachegrind:Run \`profile_local cachegrind\`. This executes the compiler on the given benchmarks under \`Cachegrind\`' \
1144'benchmark:Run compile benchmarks with a locally built compiler' \
1145'compare:Compare the results of two previously executed benchmark runs' \
1146 )
9031147 _describe -t commands 'x perf commands' commands "$@"
9041148}
1149(( $+functions[_x__perf__benchmark_commands] )) ||
1150_x__perf__benchmark_commands() {
1151 local commands; commands=()
1152 _describe -t commands 'x perf benchmark commands' commands "$@"
1153}
1154(( $+functions[_x__perf__cachegrind_commands] )) ||
1155_x__perf__cachegrind_commands() {
1156 local commands; commands=()
1157 _describe -t commands 'x perf cachegrind commands' commands "$@"
1158}
1159(( $+functions[_x__perf__compare_commands] )) ||
1160_x__perf__compare_commands() {
1161 local commands; commands=()
1162 _describe -t commands 'x perf compare commands' commands "$@"
1163}
1164(( $+functions[_x__perf__eprintln_commands] )) ||
1165_x__perf__eprintln_commands() {
1166 local commands; commands=()
1167 _describe -t commands 'x perf eprintln commands' commands "$@"
1168}
1169(( $+functions[_x__perf__samply_commands] )) ||
1170_x__perf__samply_commands() {
1171 local commands; commands=()
1172 _describe -t commands 'x perf samply commands' commands "$@"
1173}
9051174(( $+functions[_x__run_commands] )) ||
9061175_x__run_commands() {
9071176 local commands; commands=()
src/tools/rustc-perf-wrapper/Cargo.toml deleted-7
......@@ -1,7 +0,0 @@
1[package]
2name = "rustc-perf-wrapper"
3version = "0.1.0"
4edition = "2021"
5
6[dependencies]
7clap = { version = "4.5.7", features = ["derive", "env"] }
src/tools/rustc-perf-wrapper/README.md deleted-3
......@@ -1,3 +0,0 @@
1# rustc-perf wrapper
2Utility tool for invoking [`rustc-perf`](https://github.com/rust-lang/rustc-perf) for benchmarking/profiling
3a stage1/2 compiler built by bootstrap using `x perf -- <command>`.
src/tools/rustc-perf-wrapper/src/config.rs deleted-45
......@@ -1,45 +0,0 @@
1use std::fmt::{Display, Formatter};
2
3#[derive(Clone, Copy, Debug, clap::ValueEnum)]
4#[value(rename_all = "PascalCase")]
5pub enum Profile {
6 Check,
7 Debug,
8 Doc,
9 Opt,
10 Clippy,
11}
12
13impl Display for Profile {
14 fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
15 let name = match self {
16 Profile::Check => "Check",
17 Profile::Debug => "Debug",
18 Profile::Doc => "Doc",
19 Profile::Opt => "Opt",
20 Profile::Clippy => "Clippy",
21 };
22 f.write_str(name)
23 }
24}
25
26#[derive(Clone, Copy, Debug, clap::ValueEnum)]
27#[value(rename_all = "PascalCase")]
28pub enum Scenario {
29 Full,
30 IncrFull,
31 IncrUnchanged,
32 IncrPatched,
33}
34
35impl Display for Scenario {
36 fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
37 let name = match self {
38 Scenario::Full => "Full",
39 Scenario::IncrFull => "IncrFull",
40 Scenario::IncrUnchanged => "IncrUnchanged",
41 Scenario::IncrPatched => "IncrPatched",
42 };
43 f.write_str(name)
44 }
45}
src/tools/rustc-perf-wrapper/src/main.rs deleted-178
......@@ -1,178 +0,0 @@
1use std::fs::create_dir_all;
2use std::path::{Path, PathBuf};
3use std::process::Command;
4
5use clap::Parser;
6
7use crate::config::{Profile, Scenario};
8
9mod config;
10
11/// Performs profiling or benchmarking with [`rustc-perf`](https://github.com/rust-lang/rustc-perf)
12/// using a locally built compiler.
13#[derive(Debug, clap::Parser)]
14// Hide arguments from BuildContext in the default usage string.
15// Clap does not seem to have a way of disabling the usage of these arguments.
16#[clap(override_usage = "rustc-perf-wrapper [OPTIONS] <COMMAND>")]
17pub struct Args {
18 #[clap(subcommand)]
19 cmd: PerfCommand,
20
21 #[clap(flatten)]
22 ctx: BuildContext,
23}
24
25#[derive(Debug, clap::Parser)]
26enum PerfCommand {
27 /// Run `profile_local eprintln`.
28 /// This executes the compiler on the given benchmarks and stores its stderr output.
29 Eprintln {
30 #[clap(flatten)]
31 opts: SharedOpts,
32 },
33 /// Run `profile_local samply`
34 /// This executes the compiler on the given benchmarks and profiles it with `samply`.
35 /// You need to install `samply`, e.g. using `cargo install samply`.
36 Samply {
37 #[clap(flatten)]
38 opts: SharedOpts,
39 },
40 /// Run `profile_local cachegrind`.
41 /// This executes the compiler on the given benchmarks under `Cachegrind`.
42 Cachegrind {
43 #[clap(flatten)]
44 opts: SharedOpts,
45 },
46 Benchmark {
47 /// Identifier to associate benchmark results with
48 id: String,
49
50 #[clap(flatten)]
51 opts: SharedOpts,
52 },
53 Compare {
54 /// The name of the base artifact to be compared.
55 base: String,
56
57 /// The name of the modified artifact to be compared.
58 modified: String,
59 },
60}
61
62#[derive(Debug, clap::Parser)]
63struct SharedOpts {
64 /// Select the benchmarks that you want to run (separated by commas).
65 /// If unspecified, all benchmarks will be executed.
66 #[clap(long, global = true, value_delimiter = ',')]
67 include: Vec<String>,
68
69 /// Select the benchmarks matching a prefix in this comma-separated list that you don't want to run.
70 #[clap(long, global = true, value_delimiter = ',')]
71 exclude: Vec<String>,
72
73 /// Select the scenarios that should be benchmarked.
74 #[clap(
75 long,
76 global = true,
77 value_delimiter = ',',
78 default_value = "Full,IncrFull,IncrUnchanged,IncrPatched"
79 )]
80 scenarios: Vec<Scenario>,
81 /// Select the profiles that should be benchmarked.
82 #[clap(long, global = true, value_delimiter = ',', default_value = "Check,Debug,Opt")]
83 profiles: Vec<Profile>,
84}
85
86/// These arguments are mostly designed to be passed from bootstrap, not by users
87/// directly.
88#[derive(Debug, clap::Parser)]
89struct BuildContext {
90 /// Compiler binary that will be benchmarked/profiled.
91 #[clap(long, hide = true, env = "RUSTC_REAL")]
92 compiler: PathBuf,
93 /// rustc-perf collector binary that will be used for running benchmarks/profilers.
94 #[clap(long, hide = true, env = "PERF_COLLECTOR")]
95 collector: PathBuf,
96 /// Directory where to store results.
97 #[clap(long, hide = true, env = "PERF_RESULT_DIR")]
98 results_dir: PathBuf,
99}
100
101fn main() {
102 let args = Args::parse();
103 run(args);
104}
105
106fn run(args: Args) {
107 let mut cmd = Command::new(args.ctx.collector);
108 let db_path = args.ctx.results_dir.join("results.db");
109
110 match &args.cmd {
111 PerfCommand::Eprintln { opts }
112 | PerfCommand::Samply { opts }
113 | PerfCommand::Cachegrind { opts } => {
114 cmd.arg("profile_local");
115 cmd.arg(match &args.cmd {
116 PerfCommand::Eprintln { .. } => "eprintln",
117 PerfCommand::Samply { .. } => "samply",
118 PerfCommand::Cachegrind { .. } => "cachegrind",
119 _ => unreachable!(),
120 });
121
122 cmd.arg("--out-dir").arg(&args.ctx.results_dir);
123
124 apply_shared_opts(&mut cmd, opts);
125 execute_benchmark(&mut cmd, &args.ctx.compiler);
126
127 println!("You can find the results at `{}`", args.ctx.results_dir.display());
128 }
129 PerfCommand::Benchmark { id, opts } => {
130 cmd.arg("bench_local");
131 cmd.arg("--db").arg(&db_path);
132 cmd.arg("--id").arg(id);
133
134 apply_shared_opts(&mut cmd, opts);
135 create_dir_all(&args.ctx.results_dir).unwrap();
136 execute_benchmark(&mut cmd, &args.ctx.compiler);
137 }
138 PerfCommand::Compare { base, modified } => {
139 cmd.arg("bench_cmp");
140 cmd.arg("--db").arg(&db_path);
141 cmd.arg(base).arg(modified);
142
143 create_dir_all(&args.ctx.results_dir).unwrap();
144 cmd.status().expect("error while running rustc-perf bench_cmp");
145 }
146 }
147}
148
149fn apply_shared_opts(cmd: &mut Command, opts: &SharedOpts) {
150 if !opts.include.is_empty() {
151 cmd.arg("--include").arg(opts.include.join(","));
152 }
153 if !opts.exclude.is_empty() {
154 cmd.arg("--exclude").arg(opts.exclude.join(","));
155 }
156 if !opts.profiles.is_empty() {
157 cmd.arg("--profiles")
158 .arg(opts.profiles.iter().map(|p| p.to_string()).collect::<Vec<_>>().join(","));
159 }
160 if !opts.scenarios.is_empty() {
161 cmd.arg("--scenarios")
162 .arg(opts.scenarios.iter().map(|p| p.to_string()).collect::<Vec<_>>().join(","));
163 }
164}
165
166fn execute_benchmark(cmd: &mut Command, compiler: &Path) {
167 cmd.arg(compiler);
168 println!("Running `rustc-perf` using `{}`", compiler.display());
169
170 const MANIFEST_DIR: &str = env!("CARGO_MANIFEST_DIR");
171
172 let rustc_perf_dir = Path::new(MANIFEST_DIR).join("../rustc-perf");
173
174 // We need to set the working directory to `src/tools/perf`, so that it can find the directory
175 // with compile-time benchmarks.
176 let cmd = cmd.current_dir(rustc_perf_dir);
177 cmd.status().expect("error while running rustc-perf collector");
178}
tests/assembly/auxiliary/dwarf-mixed-versions-lto-aux.rs created+5
......@@ -0,0 +1,5 @@
1//@ compile-flags: -g --crate-type=rlib -Zdwarf-version=4
2
3pub fn check_is_even(number: &u64) -> bool {
4 number % 2 == 0
5}
tests/assembly/dwarf-mixed-versions-lto.rs created+19
......@@ -0,0 +1,19 @@
1// This test ensures that if LTO occurs between crates with different DWARF versions, we
2// will choose the highest DWARF version for the final binary. This matches Clang's behavior.
3
4//@ only-linux
5//@ aux-build:dwarf-mixed-versions-lto-aux.rs
6//@ compile-flags: -C lto -g -Zdwarf-version=5
7//@ assembly-output: emit-asm
8//@ no-prefer-dynamic
9
10extern crate dwarf_mixed_versions_lto_aux;
11
12fn main() {
13 dwarf_mixed_versions_lto_aux::check_is_even(&0);
14}
15
16// CHECK: .section .debug_info
17// CHECK-NOT: {{\.(short|hword)}} 2
18// CHECK-NOT: {{\.(short|hword)}} 4
19// CHECK: {{\.(short|hword)}} 5
tests/ui/lto/auxiliary/dwarf-mixed-versions-lto-aux.rs created+5
......@@ -0,0 +1,5 @@
1//@ compile-flags: -g --crate-type=rlib -Zdwarf-version=4
2
3pub fn say_hi() {
4 println!("hello there")
5}
tests/ui/lto/dwarf-mixed-versions-lto.rs created+15
......@@ -0,0 +1,15 @@
1// This test verifies that we do not produce a warning when performing LTO on a
2// crate graph that contains a mix of different DWARF version settings. This
3// matches Clang's behavior.
4
5//@ ignore-msvc Platform must use DWARF
6//@ aux-build:dwarf-mixed-versions-lto-aux.rs
7//@ compile-flags: -C lto -g -Zdwarf-version=5
8//@ no-prefer-dynamic
9//@ build-pass
10
11extern crate dwarf_mixed_versions_lto_aux;
12
13fn main() {
14 dwarf_mixed_versions_lto_aux::say_hi();
15}
tests/ui/mir/null/borrowed_mut_null.rs+1-1
......@@ -1,6 +1,6 @@
11//@ run-fail
22//@ compile-flags: -C debug-assertions
3//@ error-pattern: null pointer dereference occured
3//@ error-pattern: null pointer dereference occurred
44
55fn main() {
66 let ptr: *mut u32 = std::ptr::null_mut();
tests/ui/mir/null/borrowed_null.rs+1-1
......@@ -1,6 +1,6 @@
11//@ run-fail
22//@ compile-flags: -C debug-assertions
3//@ error-pattern: null pointer dereference occured
3//@ error-pattern: null pointer dereference occurred
44
55fn main() {
66 let ptr: *const u32 = std::ptr::null();
tests/ui/mir/null/borrowed_null_zst.rs created+8
......@@ -0,0 +1,8 @@
1//@ run-fail
2//@ compile-flags: -C debug-assertions
3//@ error-pattern: null pointer dereference occurred
4
5fn main() {
6 let ptr: *const () = std::ptr::null();
7 let _ptr: &() = unsafe { &*ptr };
8}
tests/ui/mir/null/null_lhs.rs+1-1
......@@ -1,6 +1,6 @@
11//@ run-fail
22//@ compile-flags: -C debug-assertions
3//@ error-pattern: null pointer dereference occured
3//@ error-pattern: null pointer dereference occurred
44
55fn main() {
66 let ptr: *mut u32 = std::ptr::null_mut();
tests/ui/mir/null/null_rhs.rs+1-1
......@@ -1,6 +1,6 @@
11//@ run-fail
22//@ compile-flags: -C debug-assertions
3//@ error-pattern: null pointer dereference occured
3//@ error-pattern: null pointer dereference occurred
44
55fn main() {
66 let ptr: *mut u32 = std::ptr::null_mut();
tests/ui/mir/null/place_without_read.rs+1
......@@ -6,5 +6,6 @@ fn main() {
66 let ptr: *const u16 = std::ptr::null();
77 unsafe {
88 let _ = *ptr;
9 let _ = &raw const *ptr;
910 }
1011}
tests/ui/mir/null/place_without_read_zst.rs created+11
......@@ -0,0 +1,11 @@
1// Make sure that we don't insert a check for places that do not read.
2//@ run-pass
3//@ compile-flags: -C debug-assertions
4
5fn main() {
6 let ptr: *const () = std::ptr::null();
7 unsafe {
8 let _ = *ptr;
9 let _ = &raw const *ptr;
10 }
11}
tests/ui/mir/null/two_pointers.rs+1-1
......@@ -1,6 +1,6 @@
11//@ run-fail
22//@ compile-flags: -C debug-assertions
3//@ error-pattern: null pointer dereference occured
3//@ error-pattern: null pointer dereference occurred
44
55fn main() {
66 let ptr = std::ptr::null();
triagebot.toml-1
......@@ -394,7 +394,6 @@ trigger_files = [
394394 "src/tools/tidy",
395395 "src/tools/rustdoc-gui-test",
396396 "src/tools/libcxx-version",
397 "src/tools/rustc-perf-wrapper",
398397 "x.py",
399398 "x",
400399 "x.ps1"