From: Jakub Jelinek Date: Wed, 19 Nov 2008 13:03:43 +0000 (+0100) Subject: re PR tree-optimization/36038 (miscompiled loop in perlbmk for -Os) X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=a80e4efd48ea1b55077ace5c0085fe886e1da0bd;p=gcc.git re PR tree-optimization/36038 (miscompiled loop in perlbmk for -Os) PR tree-optimization/36038 * gcc.c-torture/compile/pr36038.c: Moved to... * gcc.c-torture/execute/pr36038.c: ... here. From-SVN: r142000 --- diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 354eda68cc1..6ab4ffaaae1 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2008-11-19 Jakub Jelinek + + PR tree-optimization/36038 + * gcc.c-torture/compile/pr36038.c: Moved to... + * gcc.c-torture/execute/pr36038.c: ... here. + 2008-11-19 Andrew Stubbs PR target/36133 diff --git a/gcc/testsuite/gcc.c-torture/compile/pr36038.c b/gcc/testsuite/gcc.c-torture/compile/pr36038.c deleted file mode 100644 index de4bef3d40e..00000000000 --- a/gcc/testsuite/gcc.c-torture/compile/pr36038.c +++ /dev/null @@ -1,43 +0,0 @@ -/* PR tree-optimization/36038 */ - -long long list[10]; -long long expect[10] = { 0, 1, 2, 3, 4, 4, 5, 6, 7, 9 }; -long long *stack_base; -int indices[10]; -int *markstack_ptr; - -void -doit (void) -{ - long long *src; - long long *dst; - long long *sp = stack_base + 5; - int diff = 2; - int shift; - int count; - - shift = diff - (markstack_ptr[-1] - markstack_ptr[-2]); - count = (sp - stack_base) - markstack_ptr[-1] + 2; - src = sp; - dst = (sp += shift); - while (--count) - *dst-- = *src--; -} - -int -main () -{ - int i; - for (i = 0; i < 10; i++) - list[i] = i; - - markstack_ptr = indices + 9; - markstack_ptr[-1] = 2; - markstack_ptr[-2] = 1; - - stack_base = list + 2; - doit (); - if (__builtin_memcmp (expect, list, sizeof (list))) - __builtin_abort (); - return 0; -} diff --git a/gcc/testsuite/gcc.c-torture/execute/pr36038.c b/gcc/testsuite/gcc.c-torture/execute/pr36038.c new file mode 100644 index 00000000000..de4bef3d40e --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/execute/pr36038.c @@ -0,0 +1,43 @@ +/* PR tree-optimization/36038 */ + +long long list[10]; +long long expect[10] = { 0, 1, 2, 3, 4, 4, 5, 6, 7, 9 }; +long long *stack_base; +int indices[10]; +int *markstack_ptr; + +void +doit (void) +{ + long long *src; + long long *dst; + long long *sp = stack_base + 5; + int diff = 2; + int shift; + int count; + + shift = diff - (markstack_ptr[-1] - markstack_ptr[-2]); + count = (sp - stack_base) - markstack_ptr[-1] + 2; + src = sp; + dst = (sp += shift); + while (--count) + *dst-- = *src--; +} + +int +main () +{ + int i; + for (i = 0; i < 10; i++) + list[i] = i; + + markstack_ptr = indices + 9; + markstack_ptr[-1] = 2; + markstack_ptr[-2] = 1; + + stack_base = list + 2; + doit (); + if (__builtin_memcmp (expect, list, sizeof (list))) + __builtin_abort (); + return 0; +}