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.
CG_CLIF_DISPLAY_CG_TIME
If "1", display the time it took to perform codegen for a crate
- CG_CLIF_FUNCTION_SECTIONS
- Use a single section for each function. This will often reduce the executable size at the
- cost of making linking significantly slower.
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)
}