This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug target/11576] [3.3 regression] internal error at emit-rtl.c:2017
- From: "kazu at cs dot umass dot edu" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 6 Sep 2003 03:59:18 -0000
- Subject: [Bug target/11576] [3.3 regression] internal error at emit-rtl.c:2017
- References: <20030718133949.11576.ysato@users.sourceforge.jp>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
PLEASE REPLY TO gcc-bugzilla@gcc.gnu.org ONLY, *NOT* gcc-bugs@gcc.gnu.org.
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=11576
------- Additional Comments From kazu at cs dot umass dot edu 2003-09-06 03:59 -------
Slightly more reduced:
struct list {
struct list *next, *prev;
};
struct page {
struct list list;
int index;
int counter;
};
int bits, table;
int
foo (struct page *page, struct list *head, int offset)
{
int value = (offset >> bits) & (1 << bits);
int hash = table + value;
page->index |= 1;
{
int *v = &page->counter;
int flags;
asm volatile ("" : "=r" (flags) : : "er0");
(*v)++;
asm volatile ("" : : "r" (flags) : "er0");
}
page->index = offset;
{
struct list *new = &page->list;
struct list *prev = head;
struct list *next = head->next;
next->prev = new;
new->next = next;
new->prev = prev;
prev->next = new;
}
return (int) page + hash;
}