Revital1 Eres/Haifa/IBM wrote on 13/03/2009 07:50:08: > Hello, > > > > Using testsuite/gcc.dg/sms-6.c as an example and compiling it for > > PowerPC, > > > node 18 (see attachment) is in a SCC and cannot be scheduled until > > spliting > > > twice. The MII = 20 and the schedule can only be found at II = 24. > > > > Yes, I see. This example raises a couple of issues: > > > > o The first row split (from II=20 to II=21) is miscalculated; it should be > > row 20=0 instead of 19. Splitting row 19 cannot help schedule node 18, and > > indeed we immediately split another row. We're now checking a small patch > > to fix this, which should save one cycle of II in the above example. > > Here is the patch, on behalf of Ayal. > Passed bootstrap + regtest with SMS flags on ppc64 and bootstrap + > regtest x86. > > I'll commit it later today to trunk if that's OK. >
OK for trunk, when it's reopened for general patches (it's currently in stage 4, allowing only regression fixes; this is a missed-optimization fix, as splitting a row outside the window should not cause any problems except for inefficiency). Please add a short comment for this short fix, documenting the fact that the scheduling window is exclusive of 'end' whereas compute_split_window() expects an inclusive, ordered range. Bingfeng, you're welcome to try it out. Thanks, Ayal. > Thanks, > Revital > > * modulo-sched.c (sms_schedule_by_order): Pass the actual > schedulable rows to compute_split_row. > > [attachment "patch_sms_12_3.txt" deleted by Ayal Zaks/Haifa/IBM]