diff options
Diffstat (limited to 'gcc/testsuite/gcc.dg/lto/20090312_0.c')
-rw-r--r-- | gcc/testsuite/gcc.dg/lto/20090312_0.c | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.dg/lto/20090312_0.c b/gcc/testsuite/gcc.dg/lto/20090312_0.c new file mode 100644 index 000000000..8aaad754c --- /dev/null +++ b/gcc/testsuite/gcc.dg/lto/20090312_0.c @@ -0,0 +1,43 @@ +/* { dg-lto-do link } */ +extern int **foo (void); +extern void mumble (char*, char*, char*); + +static int * +bar (char **sp) +{ + char *s = *sp, *rs = s; + int c; + while (*foo ()[c]) + rs++; + while (c = *rs) + { + if (c || ((c == '"') || (c == '\''))) + { + if (c) + *rs++ = c; + else + mumble (0, "", ""); + } + else if (c || (*foo ()[c] & 1)) + *rs++ = c; + } + if (c) + mumble (0, "", ""); +} + +static void +baz (char *s) +{ + char *args[100]; + while (bar (&s)) + { + mumble (args[0], "", ""); + } +} + +int +main (void) +{ + baz (""); + return 0; +} |