This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug target/18251] unable to find a register to spill in class `POINTER_REGS'
- From: "bjoern dot m dot haase at web dot de" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 9 Feb 2005 20:27:42 -0000
- Subject: [Bug target/18251] unable to find a register to spill in class `POINTER_REGS'
- References: <20041031125117.18251.ralf_corsepius@rtems.org>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- 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