ssa-chrec-06.c

来自「Mac OS X 10.4.9 for x86 Source Code gcc」· C语言 代码 · 共 52 行

C
52
字号
/* APPLE LOCAL file lno *//* { dg-do compile } */ /* { dg-options "-O1 -floop-test -fdump-tree-lptest-details -fdump-tree-optimized" } */void remove_me (void);int main(void){  int a;  int b;  int c;    /* loop_1 runs 2 times.  */  for (a = 22; a < 83; a+=1)	/* a  ->  {22, +, 60}_1 */    {      c = a;            /* loop_2 runs exactly 6 times.  */      for (b = 23; b < 50; b+=5) /* b  ->  {23, +, 5}_2 */	{	  ++a;	}      /* The following stmt exercises the value of B on the exit of the loop.	 In this case the value of B out of the loop is that of the evolution	 function of B applied to the number of iterations the inner loop_2 runs.  	 Value (B) = {23, +, 5}_2 (6) = 53.  */      /* At this point, the variable A has the evolution function:	 {{22, +, 6}_1, +, 1}_2.  */      if (b != 53 	  || a != c + 6)	remove_me ();            a = a + b;      /* At this point, the variable A has the evolution function:	 {{22, +, 59}_1, +, 1}_2.  The evolution of the variable B in	 the loop_2 does not matter, and is not recorded in the	 evolution of A.  The above statement is equivalent to: 	 "a = a + 53", ie. the scalar value of B on exit of the loop_2. */            if (a != c + 59)	remove_me ();            /* And finally the a+=1 from the FOR_STMT produces the evolution	 function: {{22, +, 60}_1, +, 1}_2.  */    }}/* { dg-final { scan-tree-dump-times "set_nb_iterations_in_loop = 2" 1 "lptest"} } *//* { dg-final { scan-tree-dump-times "set_nb_iterations_in_loop = 6" 1 "lptest"} } *//* { dg-final { scan-tree-dump-times "remove_me" 0 "optimized"} } */

⌨️ 快捷键说明

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