From: Jeremy Fitzhardinge <jeremy@goop.org>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Andi Kleen <andi@firstfloor.org>,
Trent Piepho <xyzzy@speakeasy.org>,
Nick Piggin <nickpiggin@yahoo.com.au>,
Satyam Sharma <ssatyam@cse.iitk.ac.in>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
David Howells <dhowells@redhat.com>,
Andrew Morton <akpm@linux-foundation.org>
Subject: Re: [PATCH 6/8] i386: bitops: Don't mark memory as clobbered unnecessarily
Date: Tue, 24 Jul 2007 14:31:10 -0700 [thread overview]
Message-ID: <46A66F9E.1030509@goop.org> (raw)
In-Reply-To: <alpine.LFD.0.999.0707241304560.3607@woody.linux-foundation.org>
Linus Torvalds wrote:
> Sure, that's *one* thing that "volatile" guarantees (it guarantees that
> gcc won't optimize away things where the end result isn't actually visibly
> used).
>
> But gcc docs also talk about the other things volatile means, including
> "not significantly moved".
>
Actually, it doesn't. In fact it goes out of its way to say that "asm
volatile" statements can be moved quite a bit, with respect to other
asms, other code, jumps, basic blocks, etc. The only reliable way to
control the placement of an asm is have the right dependencies.
The `volatile' keyword indicates that the instruction has important
side-effects. GCC will not delete a volatile `asm' if it is reachable.
(The instruction can still be deleted if GCC can prove that
control-flow will never reach the location of the instruction.) Note
that even a volatile `asm' instruction can be moved relative to other
code, including across jump instructions.
also:
An `asm' instruction without any output operands will be treated
identically to a volatile `asm' instruction.
So there isn't anything very special about "asm volatile". It's purely
to stop apparently useless code from being removed.
J
next prev parent reply other threads:[~2007-07-24 21:32 UTC|newest]
Thread overview: 92+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-07-23 16:05 [PATCH 0/8] i386: bitops: Cleanup, sanitize, optimize Satyam Sharma
2007-07-23 16:05 ` [PATCH 1/8] i386: bitops: Update/correct comments Satyam Sharma
2007-07-23 16:05 ` [PATCH 2/8] i386: bitops: Rectify bogus "Ir" constraints Satyam Sharma
2007-07-23 16:10 ` Andi Kleen
2007-07-23 16:21 ` Satyam Sharma
2007-07-23 16:30 ` Andi Kleen
2007-07-23 16:36 ` Jan Hubicka
2007-07-23 18:05 ` H. Peter Anvin
2007-07-23 18:28 ` H. Peter Anvin
2007-07-23 17:57 ` Linus Torvalds
2007-07-23 18:14 ` Satyam Sharma
2007-07-23 18:32 ` Andi Kleen
2007-07-23 18:39 ` H. Peter Anvin
2007-07-23 18:52 ` Satyam Sharma
2007-07-23 16:05 ` [PATCH 3/8] i386: bitops: Rectify bogus "+m" constraints Satyam Sharma
2007-07-23 16:37 ` Andi Kleen
2007-07-23 17:15 ` Satyam Sharma
2007-07-23 17:46 ` Linus Torvalds
2007-07-24 9:22 ` David Howells
2007-07-23 16:05 ` [PATCH 4/8] i386: bitops: Kill volatile-casting of memory addresses Satyam Sharma
2007-07-23 17:52 ` Linus Torvalds
2007-07-24 4:19 ` Nick Piggin
2007-07-24 6:23 ` Satyam Sharma
2007-07-24 7:16 ` Nick Piggin
2007-07-24 9:49 ` Benjamin Herrenschmidt
2007-07-24 17:20 ` Linus Torvalds
2007-07-24 17:39 ` Jeff Garzik
2007-07-25 4:54 ` Nick Piggin
2007-07-23 16:05 ` [PATCH 5/8] i386: bitops: Contain warnings fallout from the death of volatiles Satyam Sharma
2007-07-23 16:05 ` [PATCH 6/8] i386: bitops: Don't mark memory as clobbered unnecessarily Satyam Sharma
2007-07-23 16:13 ` Andi Kleen
2007-07-23 16:26 ` Satyam Sharma
2007-07-23 16:33 ` Andi Kleen
2007-07-23 17:12 ` Satyam Sharma
2007-07-23 17:49 ` Jeremy Fitzhardinge
2007-07-23 17:55 ` Linus Torvalds
2007-07-24 9:52 ` Benjamin Herrenschmidt
2007-07-24 17:24 ` Linus Torvalds
2007-07-24 17:42 ` Trond Myklebust
2007-07-24 18:13 ` Linus Torvalds
2007-07-24 18:28 ` Trond Myklebust
2007-07-24 21:37 ` Benjamin Herrenschmidt
2007-07-24 21:55 ` Trond Myklebust
2007-07-24 22:32 ` Benjamin Herrenschmidt
2007-07-25 4:10 ` Nick Piggin
2007-07-24 21:36 ` Benjamin Herrenschmidt
2007-07-24 3:57 ` Nick Piggin
2007-07-24 6:38 ` Satyam Sharma
2007-07-24 7:24 ` Nick Piggin
2007-07-24 8:29 ` Satyam Sharma
2007-07-24 8:39 ` Nick Piggin
2007-07-24 8:38 ` Trent Piepho
2007-07-24 19:39 ` Linus Torvalds
2007-07-24 20:37 ` Andi Kleen
2007-07-24 20:08 ` Linus Torvalds
2007-07-24 21:31 ` Jeremy Fitzhardinge [this message]
2007-07-24 21:46 ` Linus Torvalds
2007-07-26 1:07 ` Trent Piepho
2007-07-26 1:18 ` Linus Torvalds
2007-07-26 1:22 ` Linus Torvalds
2007-07-24 9:44 ` David Howells
2007-07-24 10:02 ` Satyam Sharma
2007-07-23 16:06 ` [PATCH 7/8] i386: bitops: Kill needless usage of __asm__ __volatile__ Satyam Sharma
2007-07-23 16:18 ` Andi Kleen
2007-07-23 16:22 ` [PATCH 7/8] i386: bitops: Kill needless usage of __asm__ __volatile__ II Andi Kleen
2007-07-23 16:32 ` [PATCH 7/8] i386: bitops: Kill needless usage of __asm__ __volatile__ Satyam Sharma
2007-07-23 16:23 ` Jeremy Fitzhardinge
2007-07-23 16:43 ` Satyam Sharma
2007-07-23 17:39 ` Jeremy Fitzhardinge
2007-07-23 18:07 ` Satyam Sharma
2007-07-23 18:28 ` Jeremy Fitzhardinge
2007-07-23 20:29 ` Trent Piepho
2007-07-23 20:40 ` Jeremy Fitzhardinge
2007-07-23 21:06 ` Trent Piepho
2007-07-23 21:30 ` Andi Kleen
2007-07-23 21:48 ` Nicholas Miell
2007-07-23 16:06 ` [PATCH 8/8] i386: bitops: smp_mb__{before, after}_clear_bit() definitions Satyam Sharma
2007-07-24 3:53 ` Nick Piggin
2007-07-24 7:34 ` Satyam Sharma
2007-07-24 7:48 ` Jeremy Fitzhardinge
2007-07-24 8:31 ` Nick Piggin
2007-07-24 8:20 ` Nick Piggin
2007-07-24 9:21 ` Satyam Sharma
2007-07-24 10:25 ` Nick Piggin
2007-07-24 11:10 ` Satyam Sharma
2007-07-24 11:32 ` Nick Piggin
2007-07-24 11:45 ` Satyam Sharma
2007-07-24 12:01 ` Nick Piggin
2007-07-24 17:12 ` Linus Torvalds
2007-07-24 19:01 ` Satyam Sharma
2007-07-30 17:57 ` [PATCH 0/8] i386: bitops: Cleanup, sanitize, optimize Denis Vlasenko
2007-07-31 1:07 ` Satyam Sharma
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=46A66F9E.1030509@goop.org \
--to=jeremy@goop.org \
--cc=akpm@linux-foundation.org \
--cc=andi@firstfloor.org \
--cc=dhowells@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=nickpiggin@yahoo.com.au \
--cc=ssatyam@cse.iitk.ac.in \
--cc=torvalds@linux-foundation.org \
--cc=xyzzy@speakeasy.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