From: Timothy Miller <miller@techsource.com>
To: William Lee Irwin III <wli@holomorphy.com>
Cc: Adrian Bunk <bunk@fs.tum.de>,
Arjan van de Ven <arjanv@redhat.com>,
Nigel Cunningham <ncunningham@linuxmail.org>,
Jakub Jelinek <jakub@redhat.com>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
Subject: Re: GCC 3.4 and broken inlining.
Date: Tue, 13 Jul 2004 18:19:37 -0400 [thread overview]
Message-ID: <40F45FF9.8030702@techsource.com> (raw)
In-Reply-To: <20040710023045.GD21066@holomorphy.com>
William Lee Irwin III wrote:
> On Fri, Jul 09, 2004 at 08:24:03AM +0200, Arjan van de Ven wrote:
>
>>>one thing to note is that you also need to monitor stack usage then :)
>>>inlining somewhat blows up stack usage so do monitor it...
>
>
> On Sat, Jul 10, 2004 at 03:21:17AM +0200, Adrian Bunk wrote:
>
>>How could inlining increase stack usage?
>
>
> As more variables go into scope, gcc's stack slot allocation bug bites
> progressively harder and stackspace requirements grow without bound.
Blah... you should see what Sun's compiler does with volatiles.
Imagine you have some pointers like this:
volatile int *a, *b, *c, *d, *e;
And they are all valid pointers.
And then you have an expression like this:
x = ((((*a + *b) + *c) + *d) + *e);
Since *a and *b are volatile, the Sun compiler thinks that the sum of
the two is also volatile, allocates stack space for it. It computes (*a
+ *b), stores it on the stack, and then loads it back from the stack,
and then computes that plus *c, stores that result on the stack, then
reloads it, etc.
I had a case where pointers had to be volatile, because I needed the
memory space (over PCI) read at the right point in the code, and I
needed to do some math on what was read. I had 32 lines of code each of
which got allocated 5 temporary variables on the stack, for absolutely
no good reason. The solution was to cast away the volatile a la ((int)*a).
Now, we all know that it makes no sense for the sum of two volatiles to
also be volatile. Once *a and *b are dereferenced and their sum
computed, the sum isn't going to change, and it isn't even an lvalue, so
nothing can modify it!
So, you want to talk about bugs.... give GCC a little slack. :)
next prev parent reply other threads:[~2004-07-13 21:55 UTC|newest]
Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-07-08 11:46 GCC 3.4 and broken inlining Nigel Cunningham
2004-07-08 12:07 ` Jakub Jelinek
2004-07-08 12:11 ` Nigel Cunningham
[not found] ` <200407090036.39323.vda@port.imtp.ilyichevsk.odessa.ua>
2004-07-08 22:00 ` Nigel Cunningham
2004-07-08 22:41 ` Zan Lynx
2004-07-09 6:54 ` Arjan van de Ven
2004-07-10 21:20 ` Alexandre Oliva
2004-07-08 20:52 ` Adrian Bunk
2004-07-08 21:09 ` Arjan van de Ven
2004-07-08 22:08 ` Nigel Cunningham
2004-07-08 22:25 ` Adrian Bunk
2004-07-08 22:37 ` Nigel Cunningham
2004-07-09 6:24 ` Arjan van de Ven
2004-07-10 1:21 ` Adrian Bunk
2004-07-10 2:30 ` William Lee Irwin III
2004-07-13 22:19 ` Timothy Miller [this message]
2004-07-10 6:31 ` Arjan van de Ven
2004-07-08 22:16 ` [2.6 patch] " Adrian Bunk
2004-07-10 21:17 ` Alexandre Oliva
[not found] <2fFzK-3Zz-23@gated-at.bofh.it>
[not found] ` <2fG2F-4qK-3@gated-at.bofh.it>
[not found] ` <2fG2G-4qK-9@gated-at.bofh.it>
[not found] ` <2fPfF-2Dv-21@gated-at.bofh.it>
[not found] ` <2fPfF-2Dv-19@gated-at.bofh.it>
2004-07-09 4:51 ` Andi Kleen
2004-07-09 4:56 ` Nigel Cunningham
2004-07-09 5:46 ` Andi Kleen
2004-07-09 9:43 ` Michael Buesch
2004-07-09 10:23 ` Paweł Sikora
2004-07-10 21:33 ` Alexandre Oliva
2004-07-11 5:52 ` Andi Kleen
2004-07-14 3:00 ` Alexandre Oliva
2004-07-09 18:40 ` Adrian Bunk
2004-07-09 21:54 ` Andi Kleen
2004-07-09 22:17 ` Adrian Bunk
2004-07-10 4:50 ` Andi Kleen
2004-07-10 21:25 ` Alexandre Oliva
2004-07-11 5:53 ` Andi Kleen
2004-07-11 6:55 ` Andrew Morton
2004-07-11 8:26 ` Andi Kleen
2004-07-11 8:32 ` Andrew Morton
2004-07-11 9:08 ` Andi Kleen
2004-07-11 11:50 ` Adrian Bunk
2004-07-11 13:01 ` Arnd Bergmann
[not found] <2fVEt-6Vy-11@gated-at.bofh.it>
[not found] ` <2fVO5-79H-3@gated-at.bofh.it>
[not found] ` <2fWqQ-7uv-19@gated-at.bofh.it>
[not found] ` <2g0b6-1Cf-23@gated-at.bofh.it>
2004-07-09 10:04 ` Andi Kleen
[not found] <fa.hnj36kg.4no2jk@ifi.uio.no>
[not found] ` <fa.gktbdsg.1n4em8o@ifi.uio.no>
2004-07-10 3:12 ` Robert Hancock
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=40F45FF9.8030702@techsource.com \
--to=miller@techsource.com \
--cc=arjanv@redhat.com \
--cc=bunk@fs.tum.de \
--cc=jakub@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=ncunningham@linuxmail.org \
--cc=wli@holomorphy.com \
/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