diff options
Diffstat (limited to 'gcc-4.9/gcc/testsuite/gcc.c-torture/execute/pr48571-1.c')
-rw-r--r-- | gcc-4.9/gcc/testsuite/gcc.c-torture/execute/pr48571-1.c | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/gcc-4.9/gcc/testsuite/gcc.c-torture/execute/pr48571-1.c b/gcc-4.9/gcc/testsuite/gcc.c-torture/execute/pr48571-1.c new file mode 100644 index 000000000..06ac10360 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.c-torture/execute/pr48571-1.c @@ -0,0 +1,30 @@ +#define S (sizeof (int)) + +unsigned int c[624]; +void __attribute__((noinline)) +bar (void) +{ + unsigned int i; + /* Obfuscated c[i] = c[i-1] * 2. */ + for (i = 1; i < 624; ++i) + *(unsigned int *)((void *)c + (__SIZE_TYPE__)i * S) + = 2 * *(unsigned int *)((void *)c + ((__SIZE_TYPE__)i + + ((__SIZE_TYPE__)-S)/S) * S); +} +extern void abort (void); +int +main() +{ + unsigned int i, j; + for (i = 0; i < 624; ++i) + c[i] = 1; + bar(); + j = 1; + for (i = 0; i < 624; ++i) + { + if (c[i] != j) + abort (); + j = j * 2; + } + return 0; +} |