OSDN Git Service

New test.
authoramodra <amodra@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 21 Mar 2003 00:13:41 +0000 (00:13 +0000)
committeramodra <amodra@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 21 Mar 2003 00:13:41 +0000 (00:13 +0000)
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@64635 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/testsuite/ChangeLog
gcc/testsuite/gcc.c-torture/compile/20030320-1.c [new file with mode: 0644]

index 170886f..496d9cb 100644 (file)
@@ -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 (file)
index 0000000..40243f2
--- /dev/null
@@ -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;
+}