Marius Strobl wrote:
On Sat, Jun 28, 2008 at 12:56:08AM +0200, Christoph Mallon wrote:
Marius Strobl wrote:
marius 2008-06-27 22:17:14 UTC
FreeBSD src repository
Modified files:
sys/sparc64/include in_cksum.h
Log:
SVN rev 180073 on 2008-06-27 22:17:14Z by marius
Improve r180011 by explicitly adding the condition codes to the
clobber list.
You should remove the volatile specifier. For example volatile prevents
common subexpression elimination and other types of optimisations.
I had to adjust the constraint strings in this source file
twice now in order to keep GCC from generating broken code,
thus I prefer to be conservative by using a slightly bigger
hammer and leave the "__volatile" in in order to keep these
kind of problems from coming back to haunt us over and over
again. Especially when it comes to something as vaguely
("important side-effects", "access memory in an unpredictable
fashion", etc) documented as the GCC assembler constraints
and thus hard to get right without studying the GCC source
and maybe requiring "__volatile" in the future anyway.
volatile is for stuff, which cannot be expressed as data dependencies in
the constraints, like writing to a machine status register of the CPU,
accessing memory mapped hardware registers, which triggers something,
stuff like that. The code in question only does some adds and shifts on
registers, which is harmless and covered by the data dependecies of the
input/output/clobber constraints. volatile is simply the wrong hammer.
Regards
Christoph
_______________________________________________
cvs-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/cvs-all
To unsubscribe, send any mail to "[EMAIL PROTECTED]"