OSDN Git Service

2005-08-26 Dale Johannesen <dalej@apple.com>
authordalej <dalej@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 26 Aug 2005 21:57:18 +0000 (21:57 +0000)
committerdalej <dalej@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 26 Aug 2005 21:57:18 +0000 (21:57 +0000)
        * gcc.dg/20030711-1.c:  Modify to work on Darwin.
        * gcc.dg/20050826-1.c:  New.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@103538 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/20030711-1.c
gcc/testsuite/gcc.dg/20050826-1.c [new file with mode: 0644]

index 24179e1..bfa618a 100644 (file)
@@ -1,3 +1,8 @@
+2005-08-26  Dale Johannesen  <dalej@apple.com>
+
+       * gcc.dg/20030711-1.c:  Modify to work on Darwin.
+       * gcc.dg/20050826-1.c:  New.
+
 2005-08-26  Mark Mitchell  <mark@codesourcery.com>
 
        PR c++/19004
index 25f515c..edba6b7 100644 (file)
@@ -1,8 +1,11 @@
 /* Test whether strncmp has not been "optimized" into memcmp
    nor any code with memcmp semantics.  */
-/* { dg-do run { target i?86-*-linux* x86_64-*-linux* ia64-*-linux* alpha*-*-linux* powerpc*-*-linux* s390*-*-linux* sparc*-*-linux* } } */
+/* { dg-do run { target i?86-*-linux* x86_64-*-linux* ia64-*-linux* alpha*-*-linux* powerpc*-*-linux* s390*-*-linux* sparc*-*-linux* *-*-darwin* } } */
 /* { dg-options "-O2" } */
 #include <sys/mman.h>
+#ifndef MAP_ANONYMOUS
+#define MAP_ANONYMOUS MAP_ANON
+#endif
 #include <stdlib.h>
 
 void __attribute__((noinline)) test (const char *p)
diff --git a/gcc/testsuite/gcc.dg/20050826-1.c b/gcc/testsuite/gcc.dg/20050826-1.c
new file mode 100644 (file)
index 0000000..951f6bc
--- /dev/null
@@ -0,0 +1,44 @@
+/* Test whether strncmp has not been "optimized" into memcmp
+   nor any code with memcmp semantics.  */
+/* { dg-do run { target i?86-*-linux* x86_64-*-linux* ia64-*-linux* alpha*-*-linux* powerpc*-*-linux* s390*-*-linux* sparc*-*-linux* i?86-*-darwin* powerpc-*-darwin*} } */
+/* { dg-options "-O2" } */
+#include <sys/mman.h>
+/* Darwin spells this differently */
+#ifndef MAP_ANONYMOUS
+#define MAP_ANONYMOUS MAP_ANON
+#endif
+#include <stdlib.h>
+
+    struct Flags {
+ int filler[18];
+ unsigned int a:14;
+ unsigned int b:14;
+ unsigned int c:1;
+ unsigned int d:1;
+ unsigned int e:1;
+ unsigned int f:1;
+    };
+static void __attribute__((noinline)) set (struct Flags *);
+static void set (struct Flags *fp)
+{
+  fp->b = 5;
+  fp->d = 1;
+}
+
+static int __attribute__((noinline)) bar (int);
+static int bar(int x) { return !(x==1); }
+int main (void)
+{
+  char *p = mmap (NULL, 131072, PROT_READ | PROT_WRITE,
+                  MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
+  struct Flags *fp;
+  if (p == MAP_FAILED)
+    return 0;
+  if (munmap (p + 65536, 65536) < 0)
+    return 0;
+  fp = (struct Flags*)(p + 65536 - sizeof(struct Flags));
+  set(fp);
+  if (fp->b > 0)
+    return (bar(fp->d));
+  return 1;
+}