summaryrefslogtreecommitdiff
path: root/packages/gcc/gcc-3.3.3/pr10392-1-test.patch
diff options
context:
space:
mode:
Diffstat (limited to 'packages/gcc/gcc-3.3.3/pr10392-1-test.patch')
-rw-r--r--packages/gcc/gcc-3.3.3/pr10392-1-test.patch65
1 files changed, 65 insertions, 0 deletions
diff --git a/packages/gcc/gcc-3.3.3/pr10392-1-test.patch b/packages/gcc/gcc-3.3.3/pr10392-1-test.patch
index e69de29bb2..e94c8b9b9b 100644
--- a/packages/gcc/gcc-3.3.3/pr10392-1-test.patch
+++ b/packages/gcc/gcc-3.3.3/pr10392-1-test.patch
@@ -0,0 +1,65 @@
+--- /dev/null Sat Dec 14 13:56:51 2002
++++ gcc-3.3.1/gcc/testsuite/gcc.dg/pr10392-1.c Sun Sep 14 14:28:24 2003
+@@ -0,0 +1,62 @@
++/* PR optimization/10392
++ * Reporter: marcus@mc.pp.se
++ * Summary: [3.3/3.4 regression] [SH] optimizer generates faulty array indexing
++ * Description:
++ * The address calculation of an index operation on an array on the stack
++ * can _under some conditions_ get messed up completely
++ *
++ * Testcase tweaked by dank@kegel.com
++ * Problem only happens with -O2 -m4, so it should only happen on sh4,
++ * but what the heck, let's test other architectures, too.
++ * Not marked as xfail since it's a regression.
++*/
++/* { dg-do run } */
++/* { dg-options "-O2" } */
++/* { dg-options "-O2 -m4" { target sh4-*-* } } */
++const char *dont_optimize_function_away;
++
++const char *use(const char *str)
++{
++ dont_optimize_function_away = str;
++ if (str[0] != 'v')
++ abort();
++ if (str[1] < '1' || str[1] > '6')
++ abort();
++ if (str[2])
++ abort();
++ return str[2] ? "notused" : "v6";
++}
++
++const char *func(char *a, char *b)
++{
++ char buf[128];
++ unsigned char i;
++ const char *result;
++
++ char *item[] = {
++ "v1",
++ "v2",
++ };
++
++ buf[0] = 'v';
++ buf[1] = '3';
++ buf[2] = 0;
++
++ for (i = 0; i < 2; i++) {
++ /* bug is: following line passes wild pointer to use() on sh4 -O2 */
++ result = use(item[i]);
++
++ use(buf);
++ use(a);
++ use(b);
++ result = use(result);
++ }
++ return result;
++}
++
++int main()
++{
++ func("v4", "v5");
++ return 0;
++}
++