[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: glib 1.1.12, gtk1.1.12 for debian/ppc



On Fri, 15 Jan 1999, Daniel Jacobowitz wrote:
 
> OK, it's not schedule-insns2 then.  Try a few others if you can find
> them in the docs.

yep, you were right. it's -O -fschedule-insns that causes the bug to
appear.
 
> 62 lines is great.  But, can you grab the bare minimum of the necessary
> definitions from glib.h and remove the #include?  Then it will be self
> contained.

Ok, did so.  I even preprocessed the file with gcc -E, tidied it up a
little, and removed lots of unnecessary code. it's now 61 lines without
any includes.

Konstantinos Margaritis
kmargar@cc.uoa.gr
typedef unsigned int guint32;

__extension__ typedef unsigned long long guint64;

typedef struct __va_list_tag
  {
    char gpr;
    char fpr;
    char *overflow_arg_area;
    char *reg_save_area;
  }
__va_list[1], __gnuc_va_list[1];

typedef char gchar;
typedef int gint;

typedef unsigned int guint;

void g_log ();

void g_free (gchar * mem);


int main (int argc,
     char *argv[])
{
  gchar *string;

  gchar *mem[10000];
  gint i;

  guint n_dirname_checks = 1; //NOTE I changed this into 1 myself and it had no effect on the bug.

  guint64 gu64t1 = (__extension__ (0x1d636b02300a7aa7ULL)),
          gu64t2 = (__extension__ (0xa77a0a30026b631dULL));

  for (i = 0; i < n_dirname_checks; i++)
    {
     gchar *dirname ="";
      g_free (dirname);
    }

  (void)({
       if (!((((guint64) ((((guint64) (gu64t1) & (guint64) (__extension__ (0x00000000000000ffULL))) << 56) | 
                          (((guint64) (gu64t1) & (guint64) (__extension__ (0x000000000000ff00ULL))) << 40) |
                          (((guint64) (gu64t1) & (guint64) (__extension__ (0x0000000000ff0000ULL))) << 24) |
                          (((guint64) (gu64t1) & (guint64) (__extension__ (0x00000000ff000000ULL))) << 8) |
                          (((guint64) (gu64t1) & (guint64) (__extension__ (0x000000ff00000000ULL))) >> 8) |
                          (((guint64) (gu64t1) & (guint64) (__extension__ (0x0000ff0000000000ULL))) >> 24) |
                          (((guint64) (gu64t1) & (guint64) (__extension__ (0x00ff000000000000ULL))) >> 40) |
                          (((guint64) (gu64t1) & (guint64) (__extension__ (0xff00000000000000ULL))) >> 56)))) 
                          == gu64t2))
       g_log (); }
  );
  string = __builtin_alloca (80);

  return 0;
}

Reply to: