/* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-optimized" } */ /* For powerpc, disable doloop IV cand generation in IVOPTs to avoid unexpected division operation for its base setup. */ /* { dg-additional-options "-fno-branch-count-reg" { target { powerpc*-*-* } } } */ 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" } } */