This is the mail archive of the gcc-bugs@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]
Other format: [Raw text]

[Bug inline-asm/22045] can't find a register in class 'GENERAL_REGS'


------- 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


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