From 959ea26816ad4eb700d5026045777b1697a9a3c3 Mon Sep 17 00:00:00 2001 From: Alessandro Decina Date: Thu, 6 Jan 2022 09:16:50 +1100 Subject: [PATCH] Re-enable LTO (#22287) LTO seems to work fine now. It was possibly fixed by either the LLVM13 upgrade or by https://github.com/alessandrod/rust/commit/b2ed47a92538161e03ae0a4ed5b81c8551054065, which fixed a LTO issue with tests. --- sdk/bpf/env.sh | 2 -- sdk/cargo-build-bpf/src/main.rs | 29 ++++++++++++----------------- 2 files changed, 12 insertions(+), 19 deletions(-) diff --git a/sdk/bpf/env.sh b/sdk/bpf/env.sh index 55a49f9ea2..3bdf0555f8 100644 --- a/sdk/bpf/env.sh +++ b/sdk/bpf/env.sh @@ -14,5 +14,3 @@ export CC="$bpf_sdk/dependencies/bpf-tools/llvm/bin/clang" 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="${RUSTFLAGS} -C lto=no" diff --git a/sdk/cargo-build-bpf/src/main.rs b/sdk/cargo-build-bpf/src/main.rs index 2dcac2058d..99163a823e 100644 --- a/sdk/cargo-build-bpf/src/main.rs +++ b/sdk/cargo-build-bpf/src/main.rs @@ -515,25 +515,20 @@ 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")); - const RF_LTO: &str = "-C lto=no"; - let mut rustflags = match env::var("RUSTFLAGS") { - Ok(rf) => { - if rf.contains(&RF_LTO) { - rf - } else { - format!("{} {}", rf, RF_LTO) - } + + if let Ok(mut rustflags) = env::var("RUSTFLAGS") { + if cfg!(windows) && !rustflags.contains("-C linker=") { + let ld_path = llvm_bin.join("ld.lld"); + rustflags = format!("{} -C linker={}", rustflags, ld_path.display()); } - _ => RF_LTO.to_string(), + + if config.verbose { + println!("RUSTFLAGS={}", rustflags); + } + + env::set_var("RUSTFLAGS", rustflags); }; - if cfg!(windows) && !rustflags.contains("-C linker=") { - let ld_path = llvm_bin.join("ld.lld"); - rustflags = format!("{} -C linker={}", rustflags, ld_path.display()); - } - if config.verbose { - println!("RUSTFLAGS={}", rustflags); - } - env::set_var("RUSTFLAGS", rustflags); + let cargo_build = PathBuf::from("cargo"); let mut cargo_build_args = vec![ "+bpf",