This is the mail archive of the mailing list for the GCC project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH, Pointer Bounds Checker 13/x] Early versioning

2014-06-02 21:27 GMT+04:00 Jeff Law <>:
> 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?


> Jeff

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]