sched: Cap max_lookahead_tries to prevent overflow
Prevents scheduler overflow on modern cores by capping `max_lookahead_tries`.
The issue rate on modern CPU cores has been increasing, leading to a value of 10 in the AArch64 backend’s max_issue calculation. This caused an integer overflow when calculating max_lookahead_tries. This commit caps max_lookahead_tries to prevent this overflow, ensuring the scheduler operates correctly. The change is a small but crucial fix for handling high issue rates on contemporary hardware.
In Details
The scheduler's max_lookahead_tries calculation in haifa-sched.cc is susceptible to overflow when the backend's max_issue value becomes excessively large. With modern cores reporting issue rates up to 10, the AArch64 backend's max_issue reached this value, causing max_lookahead_tries to overflow. This commit caps max_lookahead_tries to mitigate this issue, ensuring stability in the scheduler's lookahead mechanism.
- scheduler
- A compiler component responsible for reordering instructions to improve performance, often by optimizing for pipeline utilization and minimizing stalls.
- issue rate
- The number of instructions a processor can begin executing in a single clock cycle.
- max_lookahead_tries
- A scheduler parameter that limits the number of attempts the scheduler makes to look ahead in the instruction stream for optimization opportunities.