On Oct 22, 2014, at 4:53 AM, Vladimir Makarov <vmaka...@redhat.com> wrote:

> On 10/20/2014 11:16 PM, Maxim Kuvyrkov wrote:
>> Hi,
>> 
>> This patch cleans up (removes) cached_first_cycle_multipass_dfa_lookahead 
>> and cached_issue_rate.
>> 
>> These seem to be an artifact from the scheduler refactoring 10+ years ago.  
>> They assume that dfa_lookahead and issue_rate can change mid-way through 
>> scheduling, which is never the case.  All backends currently treat 
>> dfa_lookahead and issue_rate as constants for the duration of scheduling 
>> passes.
>> 
>> Bootstrapped on x86_64-linux-gnu.  Regression testing is in progress.  OK to 
>> commit if no regressions?
>> 
> Yes.  the patch for issue rate itself is ok but you should have modified
> doc/tm.texi too for dfa lookahead hook saying that it should be a
> constant (issue rate already has such clause).
> 
> On the other hand I'd not assume that dfa look ahead is a constant.  In
> future we could make it non-constant to differentiate non-hot and hot
> functions to speed up the scheduler as dfa look ahead scheduling is
> pretty expensive.
> 
> So issue rate change is ok but I'd not rush to change dfa look ahead
> related code.

It is trivial to prove that currently 
cached_first_cycle_multipass_dfa_lookahead always has the same value as 
dfa_lookahead.  And, even should 
targetm.sched.first_cycle_multipass_dfa_lookahead start returning different 
values, max_issue will happily continue to use the value that the hook returned 
in sched_init().

Also, your suggestion to use different dfa_lookahead values for hot/cold 
functions is not affected by this patch.  The values of dfa_lookahead variable 
have scope of the scheduling pass, which is invoked separately for every 
function.

I guess, you could, potentially, start differentiating values of dfa_lookahead 
based on whether a basic_block is hot or cold, but handling this scenario would 
require significant changes throughout the scheduler.

To summarize, dfa_lookahead is currently a pass-time invariant, that is free to 
change between invocations of the scheduler pass.  
Cached_first_cycle_multipass_dfa_lookahead always holds the same value as 
dfa_lookahead, and, as such, is extraneous.

Thank you,

--
Maxim Kuvyrkov
www.linaro.org



Reply via email to