⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 20020426-2.c

📁 this is a gcc file, you can download it and learn its usetility, for further detail please look at t
💻 C
字号:
/* PR optimization/6475   Distilled from zlib sources.  *//* { dg-do run } *//* { dg-options "-O2" } *//* { dg-options "-O2 -frename-registers -fomit-frame-pointer -fPIC -mcpu=i686" { target i?86-*-* } } */typedef struct{  union  {    struct    {      unsigned char a3;      unsigned char a4;    } a2;    unsigned int a5;  } a0;  unsigned int a1;} A;static intfoo (unsigned int *b, unsigned int n, unsigned int s, const unsigned int *d,     const unsigned int *e, A **t, unsigned int *m, A *hp, unsigned int *hn,     unsigned int *v){  unsigned int a, c[15 + 1], f;  int g, h;  unsigned int i, j, k;  int l;  unsigned int ee;  unsigned int *p;  A *q, r, *u[15];  int w;  unsigned int x[15 + 1], *xx;  int y;  unsigned int z;  p = c;  *p++ = 0; *p++ = 0; *p++ = 0; *p++ = 0;  *p++ = 0; *p++ = 0; *p++ = 0; *p++ = 0;  *p++ = 0; *p++ = 0; *p++ = 0; *p++ = 0;  *p++ = 0; *p++ = 0; *p++ = 0; *p++ = 0;  p = b;  i = n;  do    c[*p++]++;  while (--i);  if (c[0] == n)    {      *t = (A *) 0;      *m = 0;      return 0;    }  l = *m;  for (j = 1; j <= 15; j++)    if (c[j])      break;  k = j;  if ((unsigned int) l < j)    l = j;  for (i = 15; i; i--)    if (c[i])      break;  g = i;  if ((unsigned int) l > i)    l = i;  *m = l;  for (y = 1 << j; j < i; j++, y <<= 1)    if ((y -= c[j]) < 0)      return -3;  if ((y -= c[i]) < 0)    return -3;  c[i] += y;  x[1] = j = 0;  p = c + 1;  xx = x + 2;  while (--i)    *xx++ = (j += *p++);  p = b;  i = 0;  do    if ((j = *p++) != 0)      v[x[j]++] = i;  while (++i < n);  n = x[g];  x[0] = i = 0;  p = v;  h = -1;  w = -l;  u[0] = (A *) 0;  q = (A *) 0;  z = 0;  for (; k <= g; k++)    {      a = c[k];      while (a--)	{	  while (k > w + l)	    {	      h++;	      w += l;	      z = g - w;	      z = z > (unsigned int) l ? l : z;	      if ((f = 1 << (j = k - w)) > a + 1)		{		  f -= a + 1;		  xx = c + k;		  if (j < z)		    while (++j < z)		      {			if ((f <<= 1) <= *++xx)			  break;			f -= *xx;		      }		}	      z = 1 << j;	      if (*hn + z > 1440)		return -3;	      u[h] = q = hp + *hn;	      *hn += z;	      if (h)		{		  x[h] = i;		  r.a0.a2.a4 = (unsigned char) l;		  r.a0.a2.a3 = (unsigned char) j;		  j = i >> (w - l);		  r.a1 = (unsigned int) (q - u[h - 1] - j);		  u[h - 1][j] = r;		}	      else		*t = q;	    }	  r.a0.a2.a4 = (unsigned char) (k - w);	  if (p >= v + n)	    r.a0.a2.a3 = 128 + 64;	  else if (*p < s)	    {	      r.a0.a2.a3 = (unsigned char) (*p < 256 ? 0 : 32 + 64);	      r.a1 = *p++;	    }	  else	    {	      r.a0.a2.a3 = (unsigned char) (e[*p - s] + 16 + 64);	      r.a1 = d[*p++ - s];	    }	  f = 1 << (k - w);	  for (j = i >> w; j < z; j += f)	    q[j] = r;	  for (j = 1 << (k - 1); i & j; j >>= 1)	    i ^= j;	  i ^= j;	  ee = (1 << w) - 1;	  while ((i & ee) != x[h])	    {	      h--;	      w -= l;	      ee = (1 << w) - 1;	    }	}    }  return y != 0 && g != 1 ? (-5) : 0;}int a[19] = { 3, 4, 0, 2, 2, [17] = 3, 3 };int d[19];A h[1440];intmain (void){  int b = 0, c = 0;  A *e = 0;  foo (a, 19, 19, 0, 0, &e, &b, h, &c, d);  exit (0);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -