From: Linus Torvalds <torvalds@linux-foundation.org>
To: Bart Van Assche <bart.vanassche@gmail.com>
Cc: linux-kernel@vger.kernel.org
Subject: Re: Is gcc thread-unsafe?
Date: Fri, 26 Oct 2007 08:27:18 -0700 (PDT) [thread overview]
Message-ID: <alpine.LFD.0.999.0710260814570.30120@woody.linux-foundation.org> (raw)
In-Reply-To: <e2e108260710260740k27210c4fu2f75d5fb31ccdccc@mail.gmail.com>
On Fri, 26 Oct 2007, Bart Van Assche wrote:
>
> You can find my proposal to improve gcc here:
> http://gcc.gnu.org/ml/gcc/2007-10/msg00465.html
Btw, I think this is fine per se, but putting "__attribute__((acquire))"
on the functions that acquire a lock does seem to be problematic, in that
quite often you might well want to inline those things. How would you
handle that?
The fact is, the whole optimization is broken. You should never do
extraneous writes to anything but registers (or your own spill pool on the
stack - anything that hasn't had its address taken and cannot be visible
to outsiders). A C compiler should basically do what the user asks it to
do, and that means that it simply should be _very_ nervous about doing
optimizations that can have visible secondary effects.
So the first question that should be asked is: "is that optimization even
worth it in the first place outside of registers and the spill pool?"
If an optimization introduces visible behaviour differences to the
"obvious" stupid interpretation of the code, it should automatically be
something that should be given a lot of thought, and perhaps not enabled
at all by default (where "default" is certainly normal optimization
levels).
And different languages have different usages. In C, it's quite common
(and _possible_) for the programmer to specify how to do things at a
fairly low level. That's not true in all other languages, and it affects
how a compiler should optimize things. In C, a compiler should give more
weight to "this is how the user specified the solution" because in C,
programmers really *do* that.
So I don't think your proposal is wrong, but I think before even going to
something like that, you should ask yourself: "was that a valid
optimization to start with?"
(That said, there may well be *other* reasons for wanting gcc to know
about lock/unlock behaviour and teaching gcc about barriers. If gcc starts
getting more threading knowledge, gcc may well need to have that kind of
information in other places).
Linus
next prev parent reply other threads:[~2007-10-26 15:27 UTC|newest]
Thread overview: 61+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <e2e108260710260729x4603211cgb68d7434ce1e54e9@mail.gmail.com>
2007-10-26 14:40 ` Bart Van Assche
2007-10-26 15:09 ` Linus Torvalds
2007-10-26 15:34 ` Andrew Haley
2007-10-26 18:06 ` David Schwartz
2007-10-30 10:20 ` Andrew Haley
2007-11-02 15:29 ` Bart Van Assche
2007-11-02 15:38 ` Andrew Haley
2007-11-04 15:13 ` Bart Van Assche
2007-11-04 17:45 ` Linus Torvalds
2007-11-04 17:58 ` Andrew Haley
2007-11-04 18:06 ` Bart Van Assche
2007-11-02 17:18 ` David Schwartz
2007-10-26 21:45 ` Giacomo Catenazzi
2007-10-26 22:24 ` Linus Torvalds
2007-10-26 15:27 ` Linus Torvalds [this message]
2007-10-26 16:28 ` Linus Torvalds
2007-10-26 17:07 ` Bart Van Assche
2007-10-26 17:12 ` Andrew Haley
2007-10-26 17:25 ` Linus Torvalds
2007-10-26 18:08 ` Alan Cox
2007-10-26 18:14 ` Linus Torvalds
2007-10-26 20:39 ` Andi Kleen
2007-10-28 18:19 linux
[not found] <fa.JbRGo0cQWncrcfKHmiNdvchsA50@ifi.uio.no>
[not found] ` <fa.8qDECVaPIo7DWbjhQbyw6N5Infg@ifi.uio.no>
[not found] ` <fa.M4DOMggyrQmdTqekWSuw4xCxiTc@ifi.uio.no>
2007-10-25 23:27 ` Robert Hancock
-- strict thread matches above, loose matches on Subject: below --
2007-10-25 3:24 Nick Piggin
2007-10-25 3:46 ` Arjan van de Ven
2007-10-25 3:58 ` Nick Piggin
2007-10-25 4:29 ` David Schwartz
2007-10-25 4:35 ` Arjan van de Ven
2007-10-25 18:45 ` Måns Rullgård
2007-10-25 4:47 ` Nick Piggin
2007-10-25 9:40 ` Samuel Tardieu
2007-10-25 9:44 ` Samuel Tardieu
2007-10-25 9:54 ` Samuel Tardieu
2007-10-25 9:55 ` Andi Kleen
2007-10-25 7:15 ` Andi Kleen
2007-10-25 11:58 ` linux-os (Dick Johnson)
2007-10-25 12:16 ` Andi Kleen
2007-10-25 22:49 ` Nick Piggin
2007-10-25 23:09 ` Andi Kleen
2007-10-25 23:14 ` Linus Torvalds
2007-10-25 23:16 ` Andi Kleen
2007-10-25 23:32 ` Linus Torvalds
2007-10-25 23:42 ` Andi Kleen
2007-10-25 23:57 ` Linus Torvalds
2007-10-26 1:15 ` Zachary Amsden
2007-10-26 4:57 ` Willy Tarreau
2007-10-25 23:43 ` Nick Piggin
2007-10-25 23:55 ` Andi Kleen
2007-10-25 23:57 ` Nick Piggin
2007-10-25 14:55 ` Linus Torvalds
2007-10-25 15:12 ` Pekka Enberg
2007-10-25 21:42 ` David Schwartz
2007-10-25 23:22 ` Nick Piggin
2007-10-26 11:59 ` Andrew Haley
2007-10-26 11:59 ` Andrew Haley
2007-10-26 17:39 ` Chris Friesen
2007-10-25 22:26 ` Ismail Dönmez
2007-10-25 22:56 ` Jeff Garzik
2007-10-25 23:04 ` Jeff Garzik
2007-10-31 22:10 ` Phillip Susi
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=alpine.LFD.0.999.0710260814570.30120@woody.linux-foundation.org \
--to=torvalds@linux-foundation.org \
--cc=bart.vanassche@gmail.com \
--cc=linux-kernel@vger.kernel.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
all inboxes | Powered by JetHome®