From 8f1a08e15c06ffb39c0b6db88fdbbfcac2141657 Mon Sep 17 00:00:00 2001 From: Dmitri Makarov Date: Wed, 9 Jun 2021 22:04:17 -0700 Subject: [PATCH] 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. --- programs/bpf/tests/programs.rs | 12 ++++++------ sdk/bpf/env.sh | 2 +- sdk/cargo-build-bpf/src/main.rs | 4 +--- 3 files changed, 8 insertions(+), 10 deletions(-) diff --git a/programs/bpf/tests/programs.rs b/programs/bpf/tests/programs.rs index 68c0aa5e1b..7d11ec2d3e 100644 --- a/programs/bpf/tests/programs.rs +++ b/programs/bpf/tests/programs.rs @@ -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), ]); } diff --git a/sdk/bpf/env.sh b/sdk/bpf/env.sh index 8c15625871..8dfb02464d 100644 --- a/sdk/bpf/env.sh +++ b/sdk/bpf/env.sh @@ -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" diff --git a/sdk/cargo-build-bpf/src/main.rs b/sdk/cargo-build-bpf/src/main.rs index d4d87b6839..7b43c7a755 100644 --- a/sdk/cargo-build-bpf/src/main.rs +++ b/sdk/cargo-build-bpf/src/main.rs @@ -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",