This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug inline-asm/22045] can't find a register in class 'GENERAL_REGS'
- From: "macro at linux-mips dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 8 Aug 2005 17:42:36 -0000
- Subject: [Bug inline-asm/22045] can't find a register in class 'GENERAL_REGS'
- References: <20050613133124.22045.macro@linux-mips.org>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Additional Comments From macro at linux-mips dot org 2005-08-08 17:42 -------
Richard,
Thanks for your work (for bug 21291). Unfortunately it's not enough for
this case. It doesn't seem to work for the "g" constraint used there, but
that might probably be considered just a shortcoming -- "=rm" or "rmi" can
be used instead as appropriate. But more importantly it doesn't work with an
early clobber and that's something that cannot be avoided -- GCC has to be
told that a register, if used, is to be destroyed early.
To summarize, the case does not work as is -- with "=&g" and "g". It does
not work with "=&rm" and "g". It does work with "=rm" and "g", but it's
dangerous as GCC will probably allocate both the same register. It does
work with "=m" and "g", but it sort of misses the point. I removed the
"register" keyword from the affected variables for these tests as it is
problematic for the "=m" case (the keyword should be safe to be removed
from glibc now, as it requires at least GCC 3.2 these days).
Please let me know if that's clear enough. Or whether I should reopen the
other (duplicate) bug rather than this one.
--
What |Removed |Added
----------------------------------------------------------------------------
Status|RESOLVED |REOPENED
Resolution|DUPLICATE |
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=22045