(sorry for replicated submissions, had to convert to plain text)

>2011/7/27 Revital1 Eres <e...@il.ibm.com>
>
>Hello Richard,
>
>
>> I ask because in the final range:
>>
>>       start = early_start;
>>       end = MIN (end, early_start + ii);
>>       /* Schedule the node close to it's predecessors.  */
>>       step = 1;
>>
>> END is an exclusive bound.  It seems like we might be double-counting
here,
>> and effectively limiting the schedule to SCHED_TIME (v_node) + ii - 2.
>
>
>Yes, I think it indeed should be fixed. Thanks for reporting on this.
>
>Revital

Agreed;

                      if (e->data_type == MEM_DEP)
                                end = MIN (end, SCHED_TIME (v_node) + ii - 1);

should be replaced with

                      if (e->data_type == MEM_DEP)
                                end = MIN (end, p_st + ii);

also for the (3rd) case when there are both previously-scheduled
predessors and previously-scheduled successors. The range is inclusive
of start and exclusive of end: for (c = start; c != end; c += step)...


>This doesn't seem to be in the paper, and the comment suggests
>"count_succs > count_preds" rather than "count_succs >= count_preds".
>Is the ">=" vs ">" important?

I think not: in both cases you'll be trying to minimize the same
number of live ranges. But indeed it's good to be consistent with the
comment.

Thanks,
Ayal.

Reply via email to