This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: Combine versus volatile (Was: Re: Performance of Integer Multiplication on PIII)


> Date: Thu, 8 Nov 2001 15:10:59 +0100
> From: Jan Hubicka <jh@suse.cz>
> To: Linus Torvalds <torvalds@transmeta.com>, gcc@gcc.gnu.org
> Cc: Jan Hubicka <jh@suse.cz>

> 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/2000-03/msg00048.html.
http://gcc.gnu.org/ml/gcc/2000-01/msg00400.html and
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.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]