From mboxrd@z Thu Jan 1 00:00:00 1970 From: "phani narasimhan venkata sesha myreddy" To: Jeffrey A Law , gcc-help@gcc.gnu.org Subject: Re.Scheduler. Date: Wed, 26 Jul 2000 22:48:00 -0000 Message-id: <397FCD55.4B42B7D2@wipro.com> X-SW-Source: 2000-07/msg00175.html sir, Thankyou for the answer. delay-branch scheduler introduces new labels and branches will jump into middle of the block. So calculation of life information becomes difficult or is it impossible. Due to the conditional branches and annuling, the registers live at the end of the block is not simple union of the live registers of it sucessors. The insns in the delay-slot should be considered. But this adds to more complexity only. execuse me, i do no much on the design, and all the things, that went in are great, to take gcc this golden shape. Thankyou. phani. ----------------------------------------------------------------------- In message < 397EFF0C.6052A5B4@wipro.com >you write: > > what if local scheduler is run after delay-branch scheduler. It won't work because the scheduler doesn't know about the constructs used to represent delayed branches, the delayed branch pass also mucks up the cfg (which the scheduler depends on) and the delayed branch mucks up the lifetime information. jeff ----------------------------------------------------------------------- sir, i am using gcc for ultrasparc scheduling. i have a general doubt on the ordering of the phase in the gcc. why is the following procedure followed in gcc. The scheduler in gcc is run before register-coloring. And then a local scheduling is done after register coloring. And then delay branch scheduling is done after the scheduling again. can i know why is it done like this way. I read in some papers the following things: 1) As the freedom is less once we map virtual-registers to hard-registers so the global-scheduler should be run before register coloring. This counters the argument that the number of globals increase. 2)The local scheduling is done after register coloring as it might have introduced some insns which may need to be handled. And the scheduling is a local scheduling only, my assumption is that the register coloring inserts spill and restores which are local to the block so only local scheduling is sufficient. 3)The delay branch scheduling is done after the second scheduling. why? It doesn't breaks the groups formed by the scheduler for superscalars. what if local scheduler is run after delay-branch scheduler. -----------------------------------------------------------------------------