view gcc/testsuite/gcc.dg/predict-3.c @ 158:494b0b89df80 default tip

...
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Mon, 25 May 2020 18:13:55 +0900
parents 84e7813d76e9
children
line wrap: on
line source

/* { dg-do compile } */
/* { dg-options "-O2 -fdump-tree-profile_estimate" } */

extern int global;

int bar(int);

void foo (int bound)
{
  int i, ret = 0;
  for (i = 0; i <= bound; i++)
    {
      if (i < bound - 2)
	global += bar (i);
      /* The following test is redundant with the loop bound check in the
         for stmt and thus eliminated by FRE which makes the controlled
	 stmt always executed and thus equivalent to 100%.  Thus the
	 heuristic only applies three times.  */
      if (i <= bound)
	global += bar (i);
      if (i + 1 < bound)
	global += bar (i);
      if (i != bound)
	global += bar (i);
    }
}

/* { dg-final { scan-tree-dump-times "guess loop iv compare heuristics of edge\[^:\]*: 64.00%" 3 "profile_estimate"} } */