From 65b4d9a263edd0484d45edaaccb48724de23c881 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=AE=B8=E6=9D=B0=E5=8F=8B=20Jieyou=20Xu=20=28Joe=29?= <39484203+jieyouxu@users.noreply.github.com> Date: Fri, 31 Jan 2025 15:54:36 +0800 Subject: [PATCH] Constrain `-Clto` and `-Cembed-bitcode` flag inheritance to be `clang`-only (#1379) --- src/flags.rs | 34 ++++++++++++++++++---------------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/src/flags.rs b/src/flags.rs index 96049a42..93391633 100644 --- a/src/flags.rs +++ b/src/flags.rs @@ -209,17 +209,6 @@ impl<'this> RustcCodegenFlags<'this> { push_if_supported(format!("-mguard={cc_val}").into()); } } - // https://clang.llvm.org/docs/ClangCommandLineReference.html#cmdoption-clang-flto - if let Some(value) = self.lto { - let cc_val = match value { - "y" | "yes" | "on" | "true" | "fat" => Some("full"), - "thin" => Some("thin"), - _ => None, - }; - if let Some(cc_val) = cc_val { - push_if_supported(format!("-flto={cc_val}").into()); - } - } // https://clang.llvm.org/docs/ClangCommandLineReference.html#cmdoption-clang-fPIC // https://clang.llvm.org/docs/ClangCommandLineReference.html#cmdoption-clang-fPIE // https://clang.llvm.org/docs/ClangCommandLineReference.html#cmdoption-clang-mdynamic-no-pic @@ -234,11 +223,6 @@ impl<'this> RustcCodegenFlags<'this> { push_if_supported(cc_flag.into()); } } - // https://clang.llvm.org/docs/ClangCommandLineReference.html#cmdoption-clang-fembed-bitcode - if let Some(value) = self.embed_bitcode { - let cc_val = if value { "all" } else { "off" }; - push_if_supported(format!("-fembed-bitcode={cc_val}").into()); - } // https://clang.llvm.org/docs/ClangCommandLineReference.html#cmdoption-clang-fno-omit-frame-pointer // https://clang.llvm.org/docs/ClangCommandLineReference.html#cmdoption-clang-fomit-frame-pointer if let Some(value) = self.force_frame_pointers { @@ -285,6 +269,24 @@ impl<'this> RustcCodegenFlags<'this> { if let Some(value) = self.profile_use { push_if_supported(format!("-fprofile-use={value}").into()); } + + // https://clang.llvm.org/docs/ClangCommandLineReference.html#cmdoption-clang-fembed-bitcode + if let Some(value) = self.embed_bitcode { + let cc_val = if value { "all" } else { "off" }; + push_if_supported(format!("-fembed-bitcode={cc_val}").into()); + } + + // https://clang.llvm.org/docs/ClangCommandLineReference.html#cmdoption-clang-flto + if let Some(value) = self.lto { + let cc_val = match value { + "y" | "yes" | "on" | "true" | "fat" => Some("full"), + "thin" => Some("thin"), + _ => None, + }; + if let Some(cc_val) = cc_val { + push_if_supported(format!("-flto={cc_val}").into()); + } + } } ToolFamily::Gnu { .. } => {} ToolFamily::Msvc { .. } => {