diff --git a/crates/llvm-context/src/polkavm/context/function/mod.rs b/crates/llvm-context/src/polkavm/context/function/mod.rs index 425c9a09..9c59104f 100644 --- a/crates/llvm-context/src/polkavm/context/function/mod.rs +++ b/crates/llvm-context/src/polkavm/context/function/mod.rs @@ -111,6 +111,10 @@ impl<'ctx> Function<'ctx> { inkwell::attributes::AttributeLoc::Function, Attribute::NoInline as u32, ); + declaration.value.remove_enum_attribute( + inkwell::attributes::AttributeLoc::Function, + Attribute::OptimizeNone as u32, + ); declaration.value.add_attribute( inkwell::attributes::AttributeLoc::Function, llvm.create_enum_attribute(*attribute_kind as u32, 0), @@ -168,6 +172,15 @@ impl<'ctx> Function<'ctx> { ); } + if !optimizer.settings().is_middle_end_enabled() { + Self::set_attributes( + llvm, + declaration, + &[Attribute::NoInline, Attribute::OptimizeNone], + true, + ); + } + Self::set_attributes(llvm, declaration, &[Attribute::NoFree], false); }