This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
"Non-optional registers need a spill register" ICE in -current
- To: egcs-bugs at cygnus dot com
- Subject: "Non-optional registers need a spill register" ICE in -current
- From: "Matthias Urlichs" <smurf at noris dot de>
- Date: Thu, 2 Jul 1998 05:57:26 +0200
>From -current, version egcs-2.91.45 19980701 (gcc2 ss-980609 experimental),
on i586-pc-linux-gnu, fresh from the CVS archive:
odu.c: In function `display_target_tables':
odu.c:28: Non-optional registers need a spill register
(insn:HI 156 61 157 (set (cc0)
(compare (reg/v:SI 28)
(reg/v:SI 22))) 12 {cmpsi_1} (insn_list 58 (nil))
(nil))
toplev.c:1189: Internal compiler error in function fatal_insn
HJ's patch to local-alloc.c is installed (somebody please commit it, or
something else that corrects the same problem...); removing it didn't make
a difference, though, so this seems to be unrelated.
Compile with -O2:
#################
typedef struct bfd_target { char *name; } bfd_target;
static void
display_target_tables ()
{
int t, columns;
extern bfd_target *bfd_target_vector[];
char *colum = "123";
columns = 0;
columns = atoi (colum);
t = 0;
while (bfd_target_vector[t] != ((void *)0) )
{
int oldt = t, wid;
wid = sizeof("rs6000:6000") + strlen (bfd_target_vector[t]->name) + 1;
++t;
while (wid < columns && bfd_target_vector[t] != ((void *)0) )
{
int newwid;
newwid = wid + strlen (bfd_target_vector[t]->name) + 1;
if (newwid >= columns)
break;
wid = newwid;
++t;
}
display_info_table (oldt, t);
}
}
#################
--
Matthias Urlichs
noris network GmbH