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]

"Non-optional registers need a spill register" ICE in -current


>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


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