>> BTW, it does not deal with types that in some instances have variables
>> allocated in proper GC way (with a path from GC root) and in some
>> instances not. Fixing these is going to be hard.
>
> Do you have some examples?
Trees and rtxes mostly. I haven't got around to taking a closer look,
but for example folders love allocating temporary trees. For example,
in tree-ssa-ccp.c:fold_gimple_assign,
if (COMPARISON_CLASS_P (op0))
{
fold_defer_overflow_warnings ();
tem = fold_binary_loc (cond_loc,
TREE_CODE (op0), TREE_TYPE (op0),
TREE_OPERAND (op0, 0),
TREE_OPERAND (op0, 1));
/* This is actually a conditional expression, not a GIMPLE
conditional statement, however, the valid_gimple_rhs_p
test still applies. */
set = (tem && is_gimple_condexpr (tem)
&& valid_gimple_rhs_p (tem));
fold_undefer_overflow_warnings (set, stmt, 0);
}
Here tem should not be allocated on GC memory.
>> I'd love to see this merged to trunk in near future too but I expect
>> that right now it would be seen as an arbitrary and annoying change by
>> developers, especially since nothing in GC implementation right now
>> makes use of it.
>
> Actually, now is a perfect time to do it (more precisely, after LTO is
> merged and before people start hacking on branches for 4.6). The only
> really active branch now is trans-mem.
In any case I am not done with it right now and it remains to be seen
if I can make it during current stage 1...
Thanks,
--
Laurynas