diff -r 419d959441ed -r 447b203edc2e patches/gcc/3.3.1/pr10392-1-test.patch --- a/patches/gcc/3.3.1/pr10392-1-test.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,65 +0,0 @@ ---- /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; -+} -+