about summary refs log tree commit diff
diff options
context:
space:
mode:
authorbjorn3 <bjorn3@users.noreply.github.com>2020-10-31 10:13:35 +0100
committerbjorn3 <bjorn3@users.noreply.github.com>2020-10-31 10:13:35 +0100
commitc067be07c12d107bf85cc6045f50c19dc79f2e3c (patch)
treec8afbaaca8e5300539f16285242faab219576647
parent114be422efbabf6632491cda8a7b3a74249374a9 (diff)
downloadrust-c067be07c12d107bf85cc6045f50c19dc79f2e3c.tar.gz
rust-c067be07c12d107bf85cc6045f50c19dc79f2e3c.zip
Implement -Zfunction-sections
-rw-r--r--docs/env_vars.md3
-rw-r--r--src/backend.rs7
2 files changed, 4 insertions, 6 deletions
diff --git a/docs/env_vars.md b/docs/env_vars.md
index 07b75622a58..f0a0a6ad42e 100644
--- a/docs/env_vars.md
+++ b/docs/env_vars.md
@@ -9,7 +9,4 @@
     object files when their content should have been changed by a change to cg_clif.</dd>
     <dt>CG_CLIF_DISPLAY_CG_TIME</dt>
     <dd>If "1", display the time it took to perform codegen for a crate</dd>
-    <dt>CG_CLIF_FUNCTION_SECTIONS</dt>
-    <dd>Use a single section for each function. This will often reduce the executable size at the
-        cost of making linking significantly slower.</dd>
 </dl>
diff --git a/src/backend.rs b/src/backend.rs
index aac37b376dc..9e32259716f 100644
--- a/src/backend.rs
+++ b/src/backend.rs
@@ -198,8 +198,9 @@ pub(crate) fn make_module(sess: &Session, name: String) -> ObjectModule {
         cranelift_module::default_libcall_names(),
     )
     .unwrap();
-    if std::env::var("CG_CLIF_FUNCTION_SECTIONS").is_ok() {
-        builder.per_function_section(true);
-    }
+    // Unlike cg_llvm, cg_clif defaults to disabling -Zfunction-sections. For cg_llvm binary size
+    // is important, while cg_clif cares more about compilation times. Enabling -Zfunction-sections
+    // can easily double the amount of time necessary to perform linking.
+    builder.per_function_section(sess.opts.debugging_opts.function_sections.unwrap_or(false));
     ObjectModule::new(builder)
 }