From 4f5394199b9823df781501e70a81bb30638cfb73 Mon Sep 17 00:00:00 2001 From: Jonas Schievink Date: Wed, 26 Aug 2020 22:11:53 +0200 Subject: [PATCH 1/2] Fix -Clinker-plugin-lto with opt-levels s and z --- compiler/rustc_codegen_ssa/src/back/linker.rs | 4 +--- src/test/ui/lto-opt-level-s.rs | 6 ++++++ src/test/ui/lto-opt-level-z.rs | 6 ++++++ 3 files changed, 13 insertions(+), 3 deletions(-) create mode 100644 src/test/ui/lto-opt-level-s.rs create mode 100644 src/test/ui/lto-opt-level-z.rs diff --git a/compiler/rustc_codegen_ssa/src/back/linker.rs b/compiler/rustc_codegen_ssa/src/back/linker.rs index 0ddf8bd316fcd..09dc51c57c22b 100644 --- a/compiler/rustc_codegen_ssa/src/back/linker.rs +++ b/compiler/rustc_codegen_ssa/src/back/linker.rs @@ -221,10 +221,8 @@ impl<'a> GccLinker<'a> { let opt_level = match self.sess.opts.optimize { config::OptLevel::No => "O0", config::OptLevel::Less => "O1", - config::OptLevel::Default => "O2", + config::OptLevel::Default | config::OptLevel::Size | config::OptLevel::SizeMin => "O2", config::OptLevel::Aggressive => "O3", - config::OptLevel::Size => "Os", - config::OptLevel::SizeMin => "Oz", }; self.linker_arg(&format!("-plugin-opt={}", opt_level)); diff --git a/src/test/ui/lto-opt-level-s.rs b/src/test/ui/lto-opt-level-s.rs new file mode 100644 index 0000000000000..ad3934efdd8d0 --- /dev/null +++ b/src/test/ui/lto-opt-level-s.rs @@ -0,0 +1,6 @@ +// compile-flags: -Clinker-plugin-lto -Copt-level=s +// build-pass + +#![crate_type = "rlib"] + +pub fn foo() {} diff --git a/src/test/ui/lto-opt-level-z.rs b/src/test/ui/lto-opt-level-z.rs new file mode 100644 index 0000000000000..3e77eb6170fb7 --- /dev/null +++ b/src/test/ui/lto-opt-level-z.rs @@ -0,0 +1,6 @@ +// compile-flags: -Clinker-plugin-lto -Copt-level=z +// build-pass + +#![crate_type = "rlib"] + +pub fn foo() {} From 32cf0350468a024207075ceed1dae4e2b8341935 Mon Sep 17 00:00:00 2001 From: Jonas Schievink Date: Mon, 12 Oct 2020 01:51:40 +0200 Subject: [PATCH 2/2] Use no-prefer-dynamic --- src/test/ui/lto-opt-level-s.rs | 1 + src/test/ui/lto-opt-level-z.rs | 1 + 2 files changed, 2 insertions(+) diff --git a/src/test/ui/lto-opt-level-s.rs b/src/test/ui/lto-opt-level-s.rs index ad3934efdd8d0..a7d9d5024d314 100644 --- a/src/test/ui/lto-opt-level-s.rs +++ b/src/test/ui/lto-opt-level-s.rs @@ -1,5 +1,6 @@ // compile-flags: -Clinker-plugin-lto -Copt-level=s // build-pass +// no-prefer-dynamic #![crate_type = "rlib"] diff --git a/src/test/ui/lto-opt-level-z.rs b/src/test/ui/lto-opt-level-z.rs index 3e77eb6170fb7..bf1f5e2b2635a 100644 --- a/src/test/ui/lto-opt-level-z.rs +++ b/src/test/ui/lto-opt-level-z.rs @@ -1,5 +1,6 @@ // compile-flags: -Clinker-plugin-lto -Copt-level=z // build-pass +// no-prefer-dynamic #![crate_type = "rlib"]