This commit is contained in:
Folkert 2021-11-11 23:38:45 +01:00
parent 38da99b1ac
commit 65a9febe7d

View file

@ -1724,9 +1724,9 @@ fn modify_refcount_union_help<'a, 'ctx, 'env>(
if let Layout::RecursivePointer = field_layout { if let Layout::RecursivePointer = field_layout {
panic!("non-recursive tag unions cannot contain naked recursion pointers!"); panic!("non-recursive tag unions cannot contain naked recursion pointers!");
} else if field_layout.contains_refcounted() { } else if field_layout.contains_refcounted() {
// crazy hack // crazy hack: inlining this function when it decrements a list or string results
match field_layout { // in many, many valgrind errors in `--optimize` mode. We do not know why.
Layout::Builtin(Builtin::Str | Builtin::List(_)) => { if let Layout::Builtin(Builtin::Str | Builtin::List(_)) = field_layout {
use inkwell::attributes::{Attribute, AttributeLoc}; use inkwell::attributes::{Attribute, AttributeLoc};
let kind_id = Attribute::get_named_enum_kind_id("noinline"); let kind_id = Attribute::get_named_enum_kind_id("noinline");
debug_assert!(kind_id > 0); debug_assert!(kind_id > 0);
@ -1734,10 +1734,6 @@ fn modify_refcount_union_help<'a, 'ctx, 'env>(
fn_val.add_attribute(AttributeLoc::Function, enum_attr); fn_val.add_attribute(AttributeLoc::Function, enum_attr);
} }
_ => {
// do nothing
}
}
let field_ptr = env let field_ptr = env
.builder .builder