Add option to use a single section for each function

This commit is contained in:
bjorn3 2020-09-23 09:43:35 +02:00
parent e5437b650b
commit a0f8765251
2 changed files with 13 additions and 6 deletions

View file

@ -70,6 +70,9 @@ function jit_calc() {
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>
## Not yet supported

View file

@ -186,13 +186,17 @@ pub(crate) type Backend =
impl cranelift_module::Backend<Product: AddConstructor + Emit + WriteDebugInfo>;
pub(crate) fn make_module(sess: &Session, name: String) -> Module<Backend> {
let mut builder = ObjectBuilder::new(
crate::build_isa(sess, true),
name + ".o",
cranelift_module::default_libcall_names(),
)
.unwrap();
if std::env::var("CG_CLIF_FUNCTION_SECTIONS").is_ok() {
builder.per_function_section(true);
}
let module: Module<ObjectBackend> = Module::new(
ObjectBuilder::new(
crate::build_isa(sess, true),
name + ".o",
cranelift_module::default_libcall_names(),
)
.unwrap(),
builder,
);
module
}