Mercurial > hg > CbC > CbC_gcc
view gcc/testsuite/gcc.dg/tree-ssa/pr21559.c @ 131:84e7813d76e9
gcc-8.2
author | mir3636 |
---|---|
date | Thu, 25 Oct 2018 07:37:49 +0900 |
parents | 04ced10e8804 |
children |
line wrap: on
line source
/* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-evrp-details -fdump-tree-vrp1-details" } */ static int blocksize = 4096; int bar (int); void foo (void) { int toread; int bytes; __attribute__ ((used)) static char eof_reached = 0; toread = blocksize; bytes = 1; while (toread != 0) { bytes = bar (toread); if (bytes <= 0) { if (bytes < 0) continue; break; } toread -= bytes; } if (bytes == 0) eof_reached = 1; } /* First, we should simplify the bits < 0 test within the loop. */ /* { dg-final { scan-tree-dump-times "Simplified relational" 1 "evrp" } } */ /* Second, we should thread the edge out of the loop via the break statement. We also realize that the final bytes == 0 test is useless, and thread over it. We also know that toread != 0 is useless when entering while loop and thread over it. */ /* { dg-final { scan-tree-dump-times "Threaded jump" 3 "vrp1" } } */