This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [tree-ssa] Treat ASM_EXPR operands as real operands [patch]
- From: Hans-Peter Nilsson <hp at bitrange dot com>
- To: Diego Novillo <dnovillo at redhat dot com>
- Cc: Andrew Macleod <amacleod at redhat dot com>, Jeff Law <law at redhat dot com>, gcc-patches <gcc-patches at gcc dot gnu dot org>, Richard Henderson <rth at redhat dot com>, Jason Merrill <jason at redhat dot com>
- Date: Thu, 24 Jul 2003 21:03:16 -0400 (EDT)
- Subject: Re: [tree-ssa] Treat ASM_EXPR operands as real operands [patch]
On 22 Jul 2003, Diego Novillo wrote:
> On Tue, 2003-07-22 at 10:06, Andrew MacLeod wrote:
> Apparently the issue is with tree-ssa copy propagating T.1233 into
> ar_ccv, which is declared with
>
> register long unsigned int ar_ccv __asm__("ar.ccv") = old;
>
> In the course of copy propagation, variable 'old' ended up being
> assigned 'T.1233', which made it into the asm operand. Perhaps we
> shouldn't optimize variables with __asm__ declarations?
(Please excuse this panicky message -- I'm behind on the lists
and seeing something that could possibly be due to an overlooked
or perhaps misunderstood issue. I've also forgotten if I've
pointed this out in the past. Disregard if you're doing right.
:-)
For asm-declared register vars, that's correct. When they're
used in an asm, they *must* make it into the asm in those
declared registers. It's documented and critically relied upon.
Don't "optimize" that use. It really is special.
brgds, H-P