From: Alan Modra Date: Fri, 21 Mar 2003 00:13:41 +0000 (+0000) Subject: New test. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=f8c8d811328db3c1158ad1d25813ee2360a8df8b;p=gcc.git New test. From-SVN: r64635 --- diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 170886f1b5e..496d9cb3b12 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2003-03-21 Alan Modra + + * gcc.c-torture/compile/20030320-1.c: New. + 2003-03-20 Roger Sayle * gcc.dg/builtins-6.c: New test case. diff --git a/gcc/testsuite/gcc.c-torture/compile/20030320-1.c b/gcc/testsuite/gcc.c-torture/compile/20030320-1.c new file mode 100644 index 00000000000..40243f28f93 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/compile/20030320-1.c @@ -0,0 +1,44 @@ +/* Failed on powerpc64-linux with a segfault due to ifcvt generating + conditional returns without updating dominance info. + Extracted from glibc's dl-load.c. */ + +typedef unsigned long size_t; + +static size_t +is_dst (const char *start, const char *name, const char *str, + int is_path, int secure) +{ + size_t len; + _Bool is_curly = 0; + + if (name[0] == '{') + { + is_curly = 1; + ++name; + } + + len = 0; + while (name[len] == str[len] && name[len] != '\0') + ++len; + + if (is_curly) + { + if (name[len] != '}') + return 0; + + + --name; + + len += 2; + } + else if (name[len] != '\0' && name[len] != '/' + && (!is_path || name[len] != ':')) + return 0; + + if (__builtin_expect (secure, 0) + && ((name[len] != '\0' && (!is_path || name[len] != ':')) + || (name != start + 1 && (!is_path || name[-2] != ':')))) + return 0; + + return len; +}