This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
On 10/03/13 14:23, Joern Rennecke wrote:
Isn't this going to result in more stack alignments (and thus unused slots on the stack). In particular the current structure will do as much of the pseudo spilling, caller save setup, as possible. Once those two steps stabilize, the stack is aligned and we proceed further into the main reload loop.To make sure that reloading is done with up-to-date register eliminations, I call update_eliminables also in the code path that continues for a frame size change. Not directly, since I need the code to spill the no longer eliminated registers; I've factored out this code into a new function update_eliminables_and_spill. Also, I move the frame size alignment code before the code that tests for a frame size change so that this is also covered with the enhanced check. In principle, we could inline update_eliminables into update_eliminables_and_spill now, since the former is only called from the latter, but I leave this to the bootstrap compiler so as not to break the connection between init_elim_table and update_eliminables. Regression tested on avr atmega128-sim. Bootstrapped and regtested on i686-pc-linux-gnu. OK to apply?
With your change it seems to me that we do a single round of spilling & caller-save setup, then align the stack, then restart. The net result being we align the stack a lot more often.
Jeff
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |