Question about SMS scheduling windows

Ayal Zaks ayal.zaks@gmail.com
Wed Jul 27 16:42:00 GMT 2011


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

>2011/7/27 Revital1 Eres <ERES@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.



More information about the Gcc mailing list