From 1c0c13f9ef6a35b45c74ee20c10d884f988fe699 Mon Sep 17 00:00:00 2001 From: Adam Gemmell Date: Thu, 10 Apr 2025 13:43:28 +0100 Subject: [PATCH] Fix intrinsic-test for debug test suites --- ci/run-docker.sh | 1 + ci/run.sh | 10 +++--- crates/intrinsic-test/src/main.rs | 57 ++++++++++++++----------------- 3 files changed, 33 insertions(+), 35 deletions(-) diff --git a/ci/run-docker.sh b/ci/run-docker.sh index 59170439c5..ab6190e204 100755 --- a/ci/run-docker.sh +++ b/ci/run-docker.sh @@ -30,6 +30,7 @@ run() { --env NORUN \ --env RUSTFLAGS \ --env STDARCH_TEST_NORUN \ + --env PROFILE \ --volume "${HOME}/.cargo":/cargo \ --volume "$(rustc --print sysroot)":/rust:ro \ --volume "$(pwd)":/checkout:ro \ diff --git a/ci/run.sh b/ci/run.sh index c5dcbcd82b..ff3d2728fa 100755 --- a/ci/run.sh +++ b/ci/run.sh @@ -171,24 +171,26 @@ esac case "${TARGET}" in aarch64-unknown-linux-gnu*|armv7-unknown-linux-gnueabihf*) CPPFLAGS="${TEST_CPPFLAGS}" RUSTFLAGS="${HOST_RUSTFLAGS}" RUST_LOG=warn \ - cargo run "${INTRINSIC_TEST}" "${PROFILE}" \ + cargo run "${INTRINSIC_TEST}" --release \ --bin intrinsic-test -- intrinsics_data/arm_intrinsics.json \ --runner "${TEST_RUNNER}" \ --cppcompiler "${TEST_CXX_COMPILER}" \ --skip "${TEST_SKIP_INTRINSICS}" \ - --target "${TARGET}" + --target "${TARGET}" \ + "${PROFILE}" ;; aarch64_be-unknown-linux-gnu*) CPPFLAGS="${TEST_CPPFLAGS}" RUSTFLAGS="${HOST_RUSTFLAGS}" RUST_LOG=warn \ - cargo run "${INTRINSIC_TEST}" "${PROFILE}" \ + cargo run "${INTRINSIC_TEST}" --release \ --bin intrinsic-test -- intrinsics_data/arm_intrinsics.json \ --runner "${TEST_RUNNER}" \ --cppcompiler "${TEST_CXX_COMPILER}" \ --skip "${TEST_SKIP_INTRINSICS}" \ --target "${TARGET}" \ --linker "${CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER}" \ - --cxx-toolchain-dir "${AARCH64_BE_TOOLCHAIN}" + --cxx-toolchain-dir "${AARCH64_BE_TOOLCHAIN}" \ + "${PROFILE}" ;; *) ;; diff --git a/crates/intrinsic-test/src/main.rs b/crates/intrinsic-test/src/main.rs index 2d04f1cf34..48ac4a0c08 100644 --- a/crates/intrinsic-test/src/main.rs +++ b/crates/intrinsic-test/src/main.rs @@ -357,6 +357,7 @@ fn build_rust( toolchain: Option<&str>, target: &str, linker: Option<&str>, + profile: &str, ) -> bool { intrinsics.iter().for_each(|i| { let rust_dir = format!(r#"rust_programs/{}"#, i.name); @@ -413,11 +414,7 @@ path = "{intrinsic}/main.rs""#, /* If there has been a linker explicitly set from the command line then * we want to set it via setting it in the RUSTFLAGS*/ - let cargo_command = format!( - "cargo {toolchain} build --target {target} --release", - toolchain = toolchain, - target = target - ); + let cargo_command = format!("cargo {toolchain} build --target {target} --profile={profile}"); let mut command = Command::new("sh"); command @@ -495,6 +492,10 @@ struct Cli { /// Set the sysroot for the C++ compiler #[arg(long)] cxx_toolchain_dir: Option, + + /// Set the profile to build Rust code under + #[arg(long, default_value_t = String::from("dev"))] + profile: String, } fn main() { @@ -507,6 +508,7 @@ fn main() { let target: &str = args.target.as_str(); let linker = args.linker.as_deref(); let cxx_toolchain_dir = args.cxx_toolchain_dir; + let profile = args.profile; let skip = if let Some(filename) = args.skip { let data = std::fs::read_to_string(&filename).expect("Failed to open file"); @@ -559,12 +561,19 @@ fn main() { std::process::exit(2); } - if !build_rust(¬ices, &intrinsics, toolchain.as_deref(), target, linker) { + if !build_rust( + ¬ices, + &intrinsics, + toolchain.as_deref(), + target, + linker, + &profile, + ) { std::process::exit(3); } if let Some(ref toolchain) = toolchain { - if !compare_outputs(&intrinsics, toolchain, &c_runner, target) { + if !compare_outputs(&intrinsics, toolchain, &c_runner, target, &profile) { std::process::exit(1) } } @@ -581,6 +590,7 @@ fn compare_outputs( toolchain: &str, runner: &str, target: &str, + profile: &str, ) -> bool { let intrinsics = intrinsics .par_iter() @@ -589,34 +599,19 @@ fn compare_outputs( .arg("-c") .arg(format!( "{runner} ./c_programs/{intrinsic}", - runner = runner, intrinsic = intrinsic.name, )) .output(); - let rust = if target != "aarch64_be-unknown-linux-gnu" { - Command::new("sh") - .current_dir("rust_programs") - .arg("-c") - .arg(format!( - "cargo {toolchain} run --target {target} --bin {intrinsic} --release", - intrinsic = intrinsic.name, - toolchain = toolchain, - target = target - )) - .env("RUSTFLAGS", "-Cdebuginfo=0") - .output() - } else { - Command::new("sh") - .arg("-c") - .arg(format!( - "{runner} ./rust_programs/target/{target}/release/{intrinsic}", - runner = runner, - target = target, - intrinsic = intrinsic.name, - )) - .output() - }; + let rust = Command::new("sh") + .current_dir("rust_programs") + .arg("-c") + .arg(format!( + "cargo {toolchain} run --target {target} --bin {intrinsic} --profile={profile}", + intrinsic = intrinsic.name, + )) + .env("RUSTFLAGS", "-Cdebuginfo=0") + .output(); let (c, rust) = match (c, rust) { (Ok(c), Ok(rust)) => (c, rust),