From: "Marcel Cox" <marcel_cox@hotmail.com>
To: gcc@gcc.gnu.org
Subject: Re: An unusual Performance approach using Synthetic registers
Date: Wed, 08 Jan 2003 17:29:00 -0000 [thread overview]
Message-ID: <avhknm$g7v$1@main.gmane.org> (raw)
In-Reply-To: <Pine.LNX.4.21.0301071341070.18968-100000@mail.kloo.net>
> > 2) Running the RA over the stack slots will cause the slots to be reused
> > when the life range of variables does not overlap. This even increases
the
> > compactness that already gives the benefit of point 1. Also, overall
> > reducing stack usage will always be a small gain.
>
> The stack slots are already reused.
Stack slots are not reused. Neither stack slots allocated for local
variables, nor stack slots created for temporaries. See the following
example:
void dummy(int, int);
void test(void)
{
int a1,b1,c1,d1;
int a2,b2,c2,d2;
c1=d1=0;
for (a1=0; a1<10; a1++)
for (b1=0; b1<=a1; b1++) {
c1+=a1*a1;
d1+=b1;
dummy(c1,d1);
}
c2=d2=0;
for (a2=0; a2<10; a2++)
for (b2=0; b2<=a2; b2++) {
c2+=a2*a2;
d2+=b2;
dummy(c2,d2);
}
}
Compiling with -O3 -march=pentium4 , this gives:
_test:
pushl %ebp
movl %esp, %ebp
pushl %edi
xorl %edi, %edi
pushl %esi
xorl %esi, %esi
pushl %ebx
subl $28, %esp
movl $0, -16(%ebp)
L11:
xorl %ebx, %ebx
cmpl %esi, %ebx
jg L25
movl %esi, %edx
imull %esi, %edx
movl %edx, -24(%ebp)
L10:
addl %ebx, -16(%ebp)
addl -24(%ebp), %edi
addl $1, %ebx
movl -16(%ebp), %eax
movl %edi, (%esp)
movl %eax, 4(%esp)
call _dummy
cmpl %esi, %ebx
jle L10
L25:
addl $1, %esi
cmpl $9, %esi
jle L11
movl $0, -20(%ebp)
xorl %edi, %edi
xorl %esi, %esi
L21:
xorl %ebx, %ebx
cmpl %esi, %ebx
jg L29
movl %esi, %edx
imull %esi, %edx
movl %edx, -28(%ebp)
L20:
addl %ebx, -20(%ebp)
addl -28(%ebp), %edi
addl $1, %ebx
movl -20(%ebp), %eax
movl %edi, (%esp)
movl %eax, 4(%esp)
call _dummy
cmpl %esi, %ebx
jle L20
L29:
addl $1, %esi
cmpl $9, %esi
jle L21
addl $28, %esp
popl %ebx
popl %esi
popl %edi
popl %ebp
ret
Stack slots are created for a1 (ebp-16) abd s2 (ebp-20), even though thos 2
variables do not overlap and could share a same stack slot. The same holds
for the expression a1*a1 which is stored in ebp-24 and a2*a2 which is stored
in ebp-28. A single stack slot could be used for both expressions as there
is no overlap in the life range.
Marcel
next prev parent reply other threads:[~2003-01-08 16:49 UTC|newest]
Thread overview: 85+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-01-07 21:01 Marcel Cox
2003-01-07 22:53 ` tm_gccmail
2003-01-08 1:05 ` tm_gccmail
2003-01-08 1:22 ` tm_gccmail
2003-01-08 11:45 ` Marcel Cox
2003-01-08 17:29 ` Marcel Cox [this message]
-- strict thread matches above, loose matches on Subject: below --
2003-01-08 12:27 Robert Dewar
2003-01-08 12:13 Robert Dewar
2003-01-08 12:21 ` Lars Segerlund
2003-01-08 5:36 Robert Dewar
2003-01-07 17:19 Robert Dewar
2003-01-07 15:17 Robert Dewar
2003-01-07 17:02 ` Michael S. Zick
2003-01-08 6:56 ` Andy Walker
2003-01-08 12:14 ` Michael S. Zick
2003-01-07 12:32 Robert Dewar
2003-01-07 19:03 ` tm_gccmail
2003-01-07 19:20 ` tm_gccmail
2003-01-08 7:52 ` Andy Walker
2003-01-08 19:29 ` Michael S. Zick
2003-01-08 20:10 ` Michael S. Zick
2003-01-08 20:44 ` tm_gccmail
2003-01-08 21:34 ` Michael S. Zick
2003-01-08 22:05 ` tm_gccmail
2003-01-08 6:08 ` Andy Walker
2003-01-07 12:08 Robert Dewar
2003-01-07 12:10 ` Momchil Velikov
2003-01-06 20:59 Robert Dewar
2003-01-07 5:29 ` Andy Walker
2003-01-07 21:49 ` Marcel Cox
2003-01-07 21:55 ` Branko Čibej
2003-01-07 21:55 ` Marcel Cox
2003-01-08 17:32 ` Tom Lord
2003-01-05 15:47 Robert Dewar
2003-01-05 22:14 ` Tom Lord
2003-01-05 14:08 Robert Dewar
2003-01-05 16:50 ` Michael S. Zick
2003-01-06 19:42 ` Tom Lord
2003-01-06 8:06 ` Andy Walker
2003-01-06 22:45 ` Michael S. Zick
2003-01-07 6:04 ` Andy Walker
2003-01-05 14:05 Robert Dewar
2003-01-06 19:42 ` Tom Lord
2003-01-06 6:49 ` Andy Walker
2003-01-05 13:13 Robert Dewar
2003-01-06 4:40 ` Andy Walker
2003-01-06 16:46 ` Michael S. Zick
2003-01-07 5:20 ` Andy Walker
2003-01-06 19:42 ` Tom Lord
2003-01-06 6:39 ` Andy Walker
2003-01-06 6:50 ` Daniel Berlin
2003-01-06 9:00 ` Andy Walker
2003-01-05 11:41 Robert Dewar
2003-01-05 16:30 ` Michael S. Zick
2003-01-06 4:53 ` Andy Walker
2003-01-06 19:50 ` Tom Lord
2003-01-06 6:29 ` Andy Walker
2003-01-06 21:53 ` Michael S. Zick
2003-01-07 6:02 ` Andy Walker
2003-01-07 17:41 ` Janis Johnson
2003-01-04 18:12 Robert Dewar
2003-01-04 14:50 Robert Dewar
2003-01-04 18:00 ` Denis Chertykov
2003-01-05 5:53 ` Andy Walker
2003-01-05 5:43 ` Andy Walker
2002-12-27 5:47 Chris Lattner
2002-12-29 0:35 ` Andy Walker
2002-12-29 5:58 ` Chris Lattner
2002-12-29 6:26 ` Alexandre Oliva
2002-12-29 12:04 ` Andy Walker
2002-12-29 13:58 ` Daniel Berlin
2002-12-29 22:41 ` Andy Walker
2002-12-29 15:50 ` Diego Novillo
2002-12-29 22:44 ` Andy Walker
2002-12-30 1:30 ` Zack Weinberg
2002-12-30 2:57 ` Andy Walker
2002-12-30 7:52 ` Michael S. Zick
2002-12-29 7:44 ` Daniel Egger
2002-12-29 12:10 ` Andy Walker
2002-12-30 20:58 ` James Mansion
2002-12-31 3:56 ` Michael S. Zick
2002-12-30 1:09 ` Michael S. Zick
2002-12-30 7:27 ` Daniel Egger
2002-12-30 10:25 ` Michael S. Zick
2002-12-30 20:50 ` Daniel Berlin
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='avhknm$g7v$1@main.gmane.org' \
--to=marcel_cox@hotmail.com \
--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).