>> 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

Reply via email to