blob: 14d75300301e381eac64d27a714e233e28a8ea52 [file] [log] [blame]
/* Test LOOP generation for very short loops. */
/* { dg-do run } */
/* { dg-options "-O1 -mloop" } */
/* -O1 in the options is significant. Without it do-loop will not be
run. */
extern void abort (void);
volatile unsigned int int_12345 = 12345;
volatile unsigned int int_0 = 0;
volatile unsigned int int_1 = 1;
unsigned int
test_loop_sum (unsigned int n)
{
unsigned i;
volatile unsigned int s = 0;
for (i = 0; i < n; i++) {
s++;
}
return s;
}
unsigned int
test_loop_shift20 (unsigned int n)
{
unsigned i;
for (i = 0; i < 10; i++) {
n <<= 2;
}
return n;
}
int
main (int argc, char** argv)
{
if (test_loop_sum (int_0) != 0)
abort();
if (test_loop_sum (int_1) != 1)
abort();
if (test_loop_sum (int_12345) != 12345)
abort();
if (test_loop_shift20 (int_0) != 0)
abort();
if (test_loop_shift20 (int_1) != (1u << 20))
abort();
return 0;
}