[Bug target/18251] unable to find a register to spill in class `POINTER_REGS'

bjoern dot m dot haase at web dot de gcc-bugzilla@gcc.gnu.org
Thu Feb 10 00:35:00 GMT 2005


------- Additional Comments From bjoern dot m dot haase at web dot de  2005-02-09 20:27 -------
The bug seems still to be present in head 4.0.0. 
 
The failing example could be stripped down a little bit further: 
 
 
// Begin of sample code 
unsigned long semaphore_create (unsigned long name, 
				      unsigned long count, 
				      unsigned long attribute_set, 
				      unsigned long *id 
				      ); 
 
struct termios 
{ 
  unsigned int c_iflag; 
  unsigned int c_oflag; 
  unsigned int c_cflag; 
  unsigned int c_lflag; 
  unsigned char c_cc[19]; 
}; 
 
typedef struct termios_callbacks 
{ 
  int (*firstOpen) (int major, int minor, void *arg); 
  int (*lastClose) (int major, int minor, void *arg); 
  int (*pollRead) (int minor); 
} termios_callbacks; 
 
void *calloc (unsigned int __nmemb, unsigned int __size); 
 
struct termios_rawbuf 
{ 
  char *theBuf; 
  int Head; 
  int Tail; 
  int Size; 
  int Semaphore; 
}; 
 
struct termios_tty 
{ 
  struct termios_tty *forw; 
  struct termios_tty *back; 
 
  unsigned long major; 
  unsigned long minor; 
  unsigned long isem; 
  unsigned long osem; 
 
  char *cbuf; 
  int ccount; 
  int cindex; 
 
  int column; 
  int read_start_column; 
 
  struct termios termios; 
  struct termios_rawbuf rawInBuf; 
  struct termios_rawbuf rawOutBuf; 
 
  termios_callbacks device; 
  unsigned int flow_ctrl; 
  unsigned int lowwater, highwater; 
 
  unsigned int rxTaskId; 
  unsigned int txTaskId; 
 
  int tty_rcvwakeup; 
}; 
 
unsigned long 
termios_open (unsigned long major, 
		    unsigned long minor, 
		    struct termios_tty *tty, 
                     const termios_callbacks * callbacks) 
{ 
  unsigned long sc; 
 
    { 
      tty = calloc (1,0);  
      if (tty == ((void *) 0)) 
	  return 0; 
      tty->rawInBuf.Size = 128; 
 
      tty->minor = minor; 
      tty->major = major; 
      sc = semaphore_create (0, 1, 0, 0 ); 
      tty->device = *callbacks; 
 
      tty->lowwater = tty->rawInBuf.Size * 1 / 2; 
    } 
} 
// End of sample code 
 
 
 

-- 


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



More information about the Gcc-bugs mailing list