This is the mail archive of the
mailing list for the GCC project.
Re: Combine versus volatile (Was: Re: Performance of Integer Multiplication on PIII)
- To: gcc at gcc dot gnu dot org, jh at suse dot cz, torvalds at transmeta dot com
- Subject: Re: Combine versus volatile (Was: Re: Performance of Integer Multiplication on PIII)
- From: mike stump <mrs at windriver dot com>
- Date: Thu, 8 Nov 2001 10:29:24 -0800 (PST)
> Date: Thu, 8 Nov 2001 15:10:59 +0100
> From: Jan Hubicka <firstname.lastname@example.org>
> To: Linus Torvalds <email@example.com>, firstname.lastname@example.org
> Cc: Jan Hubicka <email@example.com>
> Debugging my simple testcase shows that it is due to code in
> general_operand that refuse to recognize volatile memory operands
> when volatile_ok variable is not set.
This issue comes up from time to time. See
http://gcc.gnu.org/ml/gcc-bugs/1999-12n/msg00762.html for the last
couple of rounds.
volatile_ok is a stupid hack and should be removed. Removing it would
require fixing any bugs, like the one kenner alluded to, and auditing
all the m style patterns on all instructions on all CPUs and and
ensuring that they are volatile safe (not read twice, not written
twice...). The last, maybe hard to do, but, if you #define
VOLATILE_MEM_OK 1 port at a time, after being audited and fixed, we
can do it step wise through all the ports and check that in the
backed. Unaudited ports get the old semantics, audited ports get the
new semantics. In time, volatile_ok goes away.