public inbox for gcc@gcc.gnu.org
 help / color / mirror / Atom feed
From: Vladimir Makarov <vmakarov@redhat.com>
To: Georg-Johann Lay <avr@gjlay.de>, gcc@gcc.gnu.org
Subject: Re: [IRA] Code bloat due to register spills in v9, v10, v11, v12 and master
Date: Fri, 9 Dec 2022 16:14:17 -0500	[thread overview]
Message-ID: <dd4f3b80-129f-308e-1a00-1c134a93f9bd@redhat.com> (raw)
In-Reply-To: <91876f97-c1ba-2893-75c8-a765c0d9d37e@gjlay.de>


On 2022-12-09 14:23, Georg-Johann Lay wrote:
> There is the following code size regression, filed as
>
> https://gcc.gnu.org/PR90706
>

I am sorry, I feel your frustration. I was not aware of this PR. 
Unfortunately, the PR was marked as P4 and I have too many open PRs and 
should prioritize them.

I've just started to work on this issue.  It is hard for me to say when 
it will be fixed.  I'll give an update on the next week.


> Simple test cases are, for example
>
> #define PORT (*((unsigned char volatile*) 0x24))
>
> unsigned short var16;
>
> void func (void)
> {
>     if (2048000ul * var16 > 1200000ul)
>         PORT |= 1;
> }
>
> When I compile it with
>
> $ avr-gcc -Os bloat1.c -c && avr-size bloat1.o
>
> the code size increases from 36 bytes (v8) to 88 bytes (v13).
>
> Apart from that, register pressure is much higher because a frame 
> pointer is set up for no reason, and the values go through stack slots 
> for no reason.
>
> Even test cases which don't require any code like
>
> long func2 (void)
> {
>     long var32;
>     __asm ("; some code %0" : "=r" (var32));
>     return var32;
> }
>
> increase in register pressure (x2), stack usage (from 0 to 6 bytes) 
> and code size from 2 bytes (v8) to 34 bytes (v13).
>
> Some projects like QMK "solved" the problem by declaring GCC > v8 to 
> be "incompatible" with their project, see
> https://github.com/qmk/qmk_firmware/issues/6719
>
> In own projects I observed the problem, too, and the only solution is 
> to use v8 or older.  Options like -fcaller-saves or -fira-algorithm= 
> have no effect.
>
> To configure, I used --target=avr --disable-nls --with-dwarf2 
> --enable-languages=c,c++ --with-gnu-as --with-gnu-ld --disable-shared, 
> so nothing special.
>
> The problem is present in v9, v10, v11, v12 and master (future v13), 
> so sitting around for quite a while, so maybe it's not fixed because 
> RA maintainers are not aware of the problem.
>


  reply	other threads:[~2022-12-09 21:14 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-12-09 19:23 Georg-Johann Lay
2022-12-09 21:14 ` Vladimir Makarov [this message]
2022-12-10 12:15   ` Georg-Johann Lay
2022-12-10 14:10     ` Richard Biener

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=dd4f3b80-129f-308e-1a00-1c134a93f9bd@redhat.com \
    --to=vmakarov@redhat.com \
    --cc=avr@gjlay.de \
    --cc=gcc@gcc.gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).