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

Jeff Law law@redhat.com
Mon Jun 2 17:27:00 GMT 2014


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.

Jeff



More information about the Gcc-patches mailing list