Date: Fri, 2 Oct 1998 09:46:55 -0700 (PDT) From: Matthew Dillon <dillon@backplane.com> To: Bruce Evans <bde@zeta.org.au> Cc: cvs-all@FreeBSD.ORG, cvs-committers@FreeBSD.ORG, guido@gvr.org, jb@FreeBSD.ORG, phk@critter.freebsd.dk Subject: Re: cvs commit: src/lib/libc_r/uthread uthread_gc.c Makefile.inc uthread_init.c uthread_find_thread.c uthread_kern.c uthread_create.c uthread_exit.c Message-ID: <199810021646.JAA10544@apollo.backplane.com> References: <199810020302.NAA10722@godzilla.zeta.org.au>
next in thread | previous in thread | raw e-mail | index | archive | help
:> volatile int a;
:> volatile int b;
:>
:> code() {
:> a = 1;
:> b = 2;
:> }
:
:`volatile' is not necessary here in practice, since Standard C requires
:stores to act as if they are complete at sequence points, and compilers
:attempt to implement Normal C which requires everything to work Normally
:in signal handlers.
:
:Bruce
Uhh.... I really, really, really doubt you can count on that for
variable operations that do not cross a procedure boundry and do not
use the 'volatile' keyword. The peephole optimizer alone may reorder
non-volatile global loads into registers. Also, if you do not declare
the global volatile, the compiler may optimize out 'redundant' loads
that are, in fact, not redundant in a volatile situation.
-Matt
Matthew Dillon Engineering, HiWay Technologies, Inc. & BEST Internet
Communications & God knows what else.
<dillon@backplane.com> (Please include original email in any response)
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199810021646.JAA10544>
