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 optimization/11936] [3.4 Regresion] cannot find a register while reloading `asm'


PLEASE REPLY TO gcc-bugzilla@gcc.gnu.org ONLY, *NOT* gcc-bugs@gcc.gnu.org.

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=11936


pinskia at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|rejects-valid               |ice-on-valid-code
   Last reconfirmed|2003-08-15 23:25:46         |2003-08-24 16:50:04
               date|                            |


------- Additional Comments From pinskia at gcc dot gnu dot org  2003-08-24 16:50 -------
Likely related to bug 11203 and bug 9929 and bug 11001.
Here is a simplier case from bug 11960, this works at -O3, the reason why it works at -O0 
is that fmod does not get inlined at all:

extern double fmod (double __x, double __y);
extern __inline double fmod (double __x, double __y)
{
  register long double __value;
  __asm __volatile__
  ("1:  fprem\n\t" "fnstsw      %%ax\n\t" "sahf\n\t" "jp        1b"
    : "=t" (__value)
    : "0" (__x), "u" (__y)
    : "ax", "cc");
  return __value; }
double quux(void);
int main(int argc,char **argv)
{
    double d=fmod(quux(),quux());
    return 0;
}
double quux(void)
{
    return 1.2;
}


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