internal compiler error - unrecognizable insn

Michael Hinz
Thu Oct 29 05:07:00 GMT 1998

Just had one of those "pleasant" internal compiler errors, so I thought
I'd share.

The source file in question is part of the current (as of about 15:00 UTC,
october 28th) gnome-utils CVS snapshot. glib, gtk+ and gnome-libs are taken
from the same server at the same time.

About egcs and OS:

michael p4 1:22 padde[83] gcc -v
Reading specs from /usr/lib/gcc-lib/i686-pc-linux-gnu/egcs-2.92.16/specs
gcc version egcs-2.92.16 19981019 (gcc2 ss-980609 experimental)
michael p4 1:22 padde[84] uname -a
Linux 2.1.123 #19 Wed Oct 21 19:09:22 MEST 1998 i686 unknown

The failed command and error message:

gcc -DHAVE_CONFIG_H -I. -I. -I.. -I/usr/local/include -I/usr/local/include -DNEED_GNOMESUPPORT_H -I/usr/local/lib/gnome-libs/include -I/usr/X11R6/include -I/usr/lib/glib/include -DGNOMELOCALEDIR=\""/usr/local/share/locale"\" -I../../gcalendar -I/usr/X11R6/include -I/usr/lib/glib/include -g -O2 -Wall -c gnome-month-item.c
gnome-month-item.c: In function `check_day_sizes':
gnome-month-item.c:226: internal error--unrecognizable insn:
(insn:QI 135 132 23 (set (reg:DF 8 %st(0))
        (mem/s:DF (plus:SI (mem:SI (plus:SI (reg:SI 6 %ebp)
                        (const_int 8)) 0)
                (const_int 116)) 3)) -1 (insn_list 155 (insn_list 152 (insn_list 156 (insn_list 157 (insn_list 158 (nil))))))
toplev.c:1370: Internal compiler error in function fatal_insn
make[2]: *** [gnome-month-item.o] Error 1
make[2]: Leaving directory `/users/michael/cvs/gnome-utils/gncal'

The part of source where it fails looks pretty unsuspicious. I'll cite the
whole function in question (line 226 is the last line of this function, the
one with the closing brace):

/* Calculates the minimum width and height of the month item based on the day font size and padding.
 * Assumes that the minimum heading height has already been computed.
static void
check_day_sizes (GnomeMonthItem *mitem)
   double m_height;
   double m_width;
   int width;
   int max_width;
   char buf[100];
   int i;

   /* Calculate minimum height */

   m_height = mitem->head_height + 6 * (mitem->day_font->ascent + mitem->day_font->descent + 2 * mitem->day_padding);

   if (mitem->height < m_height)
      mitem->height = m_height;

   /* Calculate minimum width */

   max_width = 0;

   for (i = 1; i < 32; i++) {
      sprintf (buf, "%d", i);
      width = gdk_string_width (mitem->day_font, buf);
      if (max_width < width)
         max_width = width;

   m_width = 7 * (max_width + 2 * mitem->day_padding);

   if (mitem->width < m_width)
      mitem->width = m_width;

So. Any ideas?

"We'll be rats in the wainscoting, unnoticed but thriving on
scraps of bandwidth that nobody will miss."
        Charlie Gibbs in alt.folklore.computers

More information about the Gcc-bugs mailing list