/* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-optimized" } */ int foo (int n) { while (n >= 45) n -= 45; return n; } int bar (int n) { while (n >= 64) n -= 64; return n; } int bla (int n) { int i = 0; while (n >= 45) { i++; n -= 45; } return i; } int baz (int n) { int i = 0; while (n >= 64) { i++; n -= 64; } return i; } /* The loops computing division/modulo by 64 should be eliminated */ /* { dg-final { scan-tree-dump-times "if" 6 "optimized" } } */ /* There should be no division/modulo in the final dump (division and modulo by 64 are done using bit operations). */ /* { dg-final { scan-tree-dump-times "/" 0 "optimized" } } */ /* { dg-final { scan-tree-dump-times "%" 0 "optimized" } } */ /* { dg-final { cleanup-tree-dump "optimized" } } */