* [IRA, regresssion] code size regression with IRA
@ 2009-08-12 17:09 Hariharan
0 siblings, 0 replies; 2+ messages in thread
From: Hariharan @ 2009-08-12 17:09 UTC (permalink / raw)
To: gcc, vmakarov
[-- Attachment #1: Type: text/plain, Size: 1085 bytes --]
Hi Vlad,
I am attaching a test function which has just a huge switch statement
with multiple cases doing different things. This function register
allocates on GCC 4.3.2 with no spills at all (at -Os). The function has
lots of live ranges that span function calls, but the old allocator
seemed to handle it quite well. With IRA, i get lots of spills and a
huge frame usage (160 bytes). Can you have a look and see if this is
some heuristic going wrong in IRA or just a degenerate case?
I tried this testcase with all the IRA options, but nothing helped much
in reducing code size/frame size.
Picochip's assembly is RISC and the instructions should be obvious, but
if you need anything, please refer
http://www.picochip.com/downloads/picoGcc_reference_manual.pdf or ask
me! You can ofcourse build picochip target (picochip-unknown-none) on
mainline if you need to.
Attachments:
ira_regression.tgz - Contains source and assembly from GCC 4.3.2, 4.4.0
and mainline.
Your help is greatly appreciated. Let me know if you need any more
information.
Thanks and regards
Hari
[-- Attachment #2: ira_regression.tgz --]
[-- Type: application/x-compressed-tar, Size: 48031 bytes --]
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [IRA, regresssion] code size regression with IRA
[not found] <4A82DB1E.5090401@picochip.com>
@ 2009-08-13 23:05 ` Vladimir Makarov
0 siblings, 0 replies; 2+ messages in thread
From: Vladimir Makarov @ 2009-08-13 23:05 UTC (permalink / raw)
To: Hariharan Sandanagobalane; +Cc: gcc
Hariharan Sandanagobalane wrote:
> Hi Vlad,
> I am attaching a test function which has just a huge switch statement
> with multiple cases doing different things. This function register
> allocates on GCC 4.3.2 with no spills at all (at -Os). The function
> has lots of live ranges that span function calls, but the old
> allocator seemed to handle it quite well. With IRA, i get lots of
> spills and a huge frame usage (160 bytes). Can you have a look and see
> if this is some heuristic going wrong in IRA or just a degenerate case?
>
> I tried this testcase with all the IRA options, but nothing helped
> much in reducing code size/frame size.
>
> Picochip's assembly is RISC and the instructions should be obvious,
> but if you need anything, please refer
> http://www.picochip.com/downloads/picoGcc_reference_manual.pdf or ask
> me! You can ofcourse build picochip target (picochip-unknown-none) on
> mainline if you need to.
>
> Attachments:
> 4_3.tgz - Contains source, assembly and all the dump files from -da
> from GCC 4.3.2.
> mainline.tgz - Similar tar from mainline(as of 11/08/2009).
>
> Your help is greatly appreciated. Let me know if you need any more
> information.
>
>
As I understood correctly, the gcc4.3 did not generate spills. I've
checked gcc4.4, there are a lot of spills and there is no possibility to
rid off them because IRA reports register pressure equal to 88 and the
processor has less 16 regs.
So I guess some other optimization changed between 4.3 and 4.4 started
to generate such big register pressure. But unfortunately, I have no
idea what optimization it is. Probably you should compare each pass
dump to find this. I can not do this because 4.3 has no picochip support.
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2009-08-13 21:43 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-08-12 17:09 [IRA, regresssion] code size regression with IRA Hariharan
[not found] <4A82DB1E.5090401@picochip.com>
2009-08-13 23:05 ` Vladimir Makarov
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).