2014-06-02 21:27 GMT+04:00 Jeff Law <l...@redhat.com>:
> On 06/02/14 04:48, Ilya Enkovich wrote:
>>>
>>> Hmm, so if I understand things correctly, src_fun has no loop
>>> structures attached, thus there's nothing to copy.  Presumably at
>>> some later point we build loop structures for the copy from scratch?
>>
>> I suppose it is just a simple bug with absent NULL pointer check.  Here is
>> original code:
>>
>>    /* Duplicate the loop tree, if available and wanted.  */
>>    if (loops_for_fn (src_cfun) != NULL
>>        && current_loops != NULL)
>>      {
>>        copy_loops (id, entry_block_map->loop_father,
>>                    get_loop (src_cfun, 0));
>>        /* Defer to cfgcleanup to update loop-father fields of
>> basic-blocks.  */
>>        loops_state_set (LOOPS_NEED_FIXUP);
>>      }
>>
>>    /* If the loop tree in the source function needed fixup, mark the
>>       destination loop tree for fixup, too.  */
>>    if (loops_for_fn (src_cfun)->state & LOOPS_NEED_FIXUP)
>>      loops_state_set (LOOPS_NEED_FIXUP);
>>
>> As you may see we have check for absent loops structure in the first
>> if-statement and no check in the second one.  I hit segfault and added the
>> check.
>
> Downthread you indicated you're not in SSA form which might explain the
> inconsistency here.  If so, then we need to make sure that the loop & df
> structures do get set up properly later.

That is what init_data_structures pass will do for us as Richard pointed. Right?

Ilya

>
> Jeff

Reply via email to