vartrack1.c

来自「用于进行gcc测试」· C语言 代码 · 共 100 行

C
100
字号
// This testcase used to hang the compiler in vt_find_locations.// { dg-do compile }// { dg-options "-O2 -g" }struct S{  int a;  S *b, *c, *d;};struct T{  void f1 (S *x);  void f2 (S *x);  void f3 (S *x, S *y);  S *e;};voidT::f3 (S *x, S *y){  while (x != this->e && (!x || x->a == 1))    {      if (x == y->c)	{	  S *w = y->d;	  if (w && w->a == 0)	    {	      w->a = 1;	      y->a = 0;	      f2 (y);	      w = y->d;	    }	  if (w && (!w->c || w->c->a == 1) && (!w->d || w->d->a == 1))	    {	      w->a = 0;	      x = y;	      y = x->b;	    }	  else	    {	      if (w && (!w->d || w->d->a == 1))		{		  if (w->c)		    w->c->a = 1;		  w->a = 0;		  f1 (w);		  w = y->d;		}	      if (w)		{		  w->a = y->a;		  if (w->d)		    w->d->a = 1;		}	      y->a = 1;	      f2 (y);	      x = e;	    }	}      else	{	  S *w = y->c;	  if (w && w->a == 0)	    {	      w->a = 1;	      y->a = 0;	      f1 (y);	      w = y->c;	    }	  if (w && (!w->c || w->c->a == 1) && (!w->d || w->d->a == 1))	    {	      w->a = 0;	      x = y;	      y = x->b;	    }	  else	    {	      if (w && (!w->c || w->c->a == 1))		{		  w->a = 0;		  if (w->d)		    w->d->a = 1;		  f2 (w);		  w = y->c;		}	      if (w)		{		  w->a = y->a;		  if (w->c)		    w->c->a = 1;		}	      y->a = 1;	      f1 (y);	      x = e;	    }	}    }}

⌨️ 快捷键说明

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