On Feb 10, 2015, at 7:16 AM, Jeff Law <l...@redhat.com> wrote:

> On 02/06/15 05:24, James Greenhalgh wrote:
>> 
>> ---
>> 2015-02-06  James Greenhalgh  <james.greenha...@arm.com>
>> 
>>      * haifa-sched.c (recompute_todo_spec): After applying a
>>      replacement and cancelling a dependency, also clear the
>>      SCHED_GROUP_P flag.
> My worry here would be that we might be clearing a SCHED_GROUP_P that had 
> been set for some reason other than macro-fusion.
> 
> It makes me wonder if we really want another bit to carry the "these must 
> remain consecutive for correctness" vs "please keep these together so 
> something later can optimize better" characteristics.
> 
> I'm also tracking a bug where we mis-handle SCHED_GROUP_P when there's a 
> hazard of some sort between the first and second in the group.  In that case 
> we fire the first insn, then queue the second.  If some other insn that had 
> been queued earlier becomes ready during the cycles between where the first 
> insn fired and 2nd insn is scheduled to fire, then we'll break the 
> SCHED_GROUP_P relationship.  For the particular case I'm looking at, it's a 
> correctness issue (cc0 machine and we end up splitting the cc0-setter and 
> cc0-user).

Scheduler is not supposed to look at either queue or ready list when scheduling 
instructions in the SCHED_GROUP.  There used to be code in schedule_insn() 
(this function is refactored/gone now, I think), but the logic should have 
stayed their.

I'm at a conference at the moment (Linaro Connect) and can look at this on 
Monday/Tuesday (Feb 16/17). 

--
Maxim Kuvyrkov
www.linaro.org

Reply via email to