diff --git a/kani-driver/src/call_cargo.rs b/kani-driver/src/call_cargo.rs index af2e3f192e45..58aade9f9c3a 100644 --- a/kani-driver/src/call_cargo.rs +++ b/kani-driver/src/call_cargo.rs @@ -466,6 +466,7 @@ pub fn cargo_config_args() -> Vec { // Propagate `--cfg=kani_host` to build scripts. "-Zhost-config", "-Ztarget-applies-to-host", + "-Ctarget-feature=+neon", "--config=host.rustflags=[\"--cfg=kani_host\"]", ] .map(OsString::from) diff --git a/kani-driver/src/call_single_file.rs b/kani-driver/src/call_single_file.rs index f3e488791ddc..ade2e3072f4c 100644 --- a/kani-driver/src/call_single_file.rs +++ b/kani-driver/src/call_single_file.rs @@ -182,6 +182,7 @@ impl KaniSession { "--check-cfg=cfg(kani)", // Do not invoke the linker since the compiler will not generate real object files "-Clinker=echo", + "-Ctarget-feature=+neon", ] .map(OsString::from), ); @@ -230,6 +231,8 @@ pub fn base_rustc_flags(lib_config: LibConfig) -> Vec { "crate-attr=feature(register_tool)", "-Z", "crate-attr=register_tool(kanitool)", + "-C", + "target-feature=+neon", ] .map(OsString::from) .to_vec(); diff --git a/tools/build-kani/src/sysroot.rs b/tools/build-kani/src/sysroot.rs index bb8708a14f68..9315e4ec1c95 100644 --- a/tools/build-kani/src/sysroot.rs +++ b/tools/build-kani/src/sysroot.rs @@ -85,7 +85,11 @@ pub fn build_lib(bin_folder: &Path) -> Result<()> { fn build_verification_lib(compiler_path: &Path) -> Result<()> { let extra_args = ["-Z", "build-std=panic_abort,std,test", "--config", "profile.dev.panic=\"abort\""]; - let compiler_args = ["--kani-compiler", "-Cllvm-args=--ignore-global-asm --build-std"]; + let compiler_args = [ + "--kani-compiler", + "-Cllvm-args=--ignore-global-asm --build-std", + "-Ctarget-feature=+neon", + ]; let packages = ["std", "kani", "kani_macros"]; let artifacts = build_kani_lib(compiler_path, &packages, &extra_args, &compiler_args)?; copy_artifacts(&artifacts, &kani_sysroot_lib(), true) @@ -97,7 +101,8 @@ fn build_playback_lib(compiler_path: &Path) -> Result<()> { let extra_args = ["--features=std/concrete_playback,kani/concrete_playback", "-Z", "build-std=std,test"]; let packages = ["std", "kani", "kani_macros"]; - let artifacts = build_kani_lib(compiler_path, &packages, &extra_args, &[])?; + let artifacts = + build_kani_lib(compiler_path, &packages, &extra_args, &["-Ctarget-feature=+neon"])?; copy_artifacts(&artifacts, &kani_playback_lib(), true) } @@ -278,6 +283,7 @@ pub fn build_bin>(extra_args: &[T]) -> Result { .arg("build") .args(extra_args) .args(args) + .env("CARGO_ENCODED_RUSTFLAGS", "-Ctarget-feature=+neon") .run() .or(Err(format_err!("Failed to build binaries.")))?; Ok(out_dir)