diff options
author | Alan Modra <amodra@bigpond.net.au> | 2003-03-21 00:13:41 +0000 |
---|---|---|
committer | Alan Modra <amodra@gcc.gnu.org> | 2003-03-21 10:43:41 +1030 |
commit | f8c8d811328db3c1158ad1d25813ee2360a8df8b (patch) | |
tree | ed806e6daf69254abf3699c8a1cd71dccd8b6c53 /gcc | |
parent | 4bddea4c011b8451080da646aa89194acbf8809f (diff) | |
download | gcc-f8c8d811328db3c1158ad1d25813ee2360a8df8b.zip gcc-f8c8d811328db3c1158ad1d25813ee2360a8df8b.tar.gz gcc-f8c8d811328db3c1158ad1d25813ee2360a8df8b.tar.bz2 |
New test.
From-SVN: r64635
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/testsuite/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/testsuite/gcc.c-torture/compile/20030320-1.c | 44 |
2 files changed, 48 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 170886f..496d9cb 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2003-03-21 Alan Modra <amodra@bigpond.net.au> + + * gcc.c-torture/compile/20030320-1.c: New. + 2003-03-20 Roger Sayle <roger@eyesopen.com> * 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 0000000..40243f2 --- /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; +} |