Remove O2 option for compiling BPF programs (#17865)

rustc default compiler optimization level is O3. This change removes
the option that overrides the default optimization level, because it
is safe to do so.  The code generation is incorrect in some cases
because of link-time optimizations, which remain disabled for
compiling BPF programs.  In addition, this commit updates the expected
instruction counts for assert_instruction_count test.
This commit is contained in:
Dmitri Makarov
2021-06-09 22:04:17 -07:00
committed by Justin Starry
parent c8d9e6c8c8
commit 8f1a08e15c
3 changed files with 8 additions and 10 deletions

View File

@ -1296,17 +1296,17 @@ fn assert_instruction_count() {
{
programs.extend_from_slice(&[
("solana_bpf_rust_128bit", 584),
("solana_bpf_rust_alloc", 7890),
("solana_bpf_rust_alloc", 7082),
("solana_bpf_rust_dep_crate", 2),
("solana_bpf_rust_external_spend", 508),
("solana_bpf_rust_external_spend", 504),
("solana_bpf_rust_iter", 724),
("solana_bpf_rust_many_args", 233),
("solana_bpf_rust_mem", 3095),
("solana_bpf_rust_membuiltins", 4012),
("solana_bpf_rust_noop", 482),
("solana_bpf_rust_mem", 3117),
("solana_bpf_rust_membuiltins", 4065),
("solana_bpf_rust_noop", 478),
("solana_bpf_rust_param_passing", 46),
("solana_bpf_rust_sanity", 900),
("solana_bpf_rust_sha", 28877),
("solana_bpf_rust_sha", 28795),
]);
}

View File

@ -15,4 +15,4 @@ export AR="$bpf_sdk/dependencies/bpf-tools/llvm/bin/llvm-ar"
export OBJDUMP="$bpf_sdk/dependencies/bpf-tools/llvm/bin/llvm-objdump"
export OBJCOPY="$bpf_sdk/dependencies/bpf-tools/llvm/bin/llvm-objcopy"
export RUSTFLAGS="-C lto=no -C opt-level=2"
export RUSTFLAGS="-C lto=no"

View File

@ -277,9 +277,7 @@ fn build_bpf_package(config: &Config, target_directory: &Path, package: &cargo_m
env::set_var("AR", llvm_bin.join("llvm-ar"));
env::set_var("OBJDUMP", llvm_bin.join("llvm-objdump"));
env::set_var("OBJCOPY", llvm_bin.join("llvm-objcopy"));
let mut rust_flags = String::from("-C lto=no");
rust_flags.push_str(" -C opt-level=2");
env::set_var("RUSTFLAGS", rust_flags);
env::set_var("RUSTFLAGS", "-C lto=no");
let cargo_build = PathBuf::from("cargo");
let mut cargo_build_args = vec![
"+bpf",