g_c_assn and g_ret_assn, and probably a few others in g_expr.clu, miscompile references to constant parameters in parameterized modules: they are not fetched through the appropriate owns. E.g. in
foo = proc [_II: int] () returns (int)
return (_II)
end foo
the reference to _II is miscompiled as _ii instead of op_own_ptr->_ii. Hiding the reference inside an expression, e.g. _II + 0, sends the compiler through a different codegen path and works around the bug.
Xref: b249e86
g_c_assnandg_ret_assn, and probably a few others ing_expr.clu, miscompile references to constant parameters in parameterized modules: they are not fetched through the appropriate owns. E.g. inthe reference to
_IIis miscompiled as_iiinstead ofop_own_ptr->_ii. Hiding the reference inside an expression, e.g._II + 0, sends the compiler through a different codegen path and works around the bug.Xref: b249e86