aboutsummaryrefslogtreecommitdiff
path: root/SingleSource/Regression/C/gcc-c-torture/execute/string-opt-18.c
diff options
context:
space:
mode:
Diffstat (limited to 'SingleSource/Regression/C/gcc-c-torture/execute/string-opt-18.c')
-rw-r--r--SingleSource/Regression/C/gcc-c-torture/execute/string-opt-18.c75
1 files changed, 75 insertions, 0 deletions
diff --git a/SingleSource/Regression/C/gcc-c-torture/execute/string-opt-18.c b/SingleSource/Regression/C/gcc-c-torture/execute/string-opt-18.c
new file mode 100644
index 00000000..78ca30cc
--- /dev/null
+++ b/SingleSource/Regression/C/gcc-c-torture/execute/string-opt-18.c
@@ -0,0 +1,75 @@
+/* Copyright (C) 2003 Free Software Foundation.
+
+ Test equal pointer optimizations don't break anything.
+
+ Written by Roger Sayle, July 14, 2003. */
+
+extern void abort ();
+typedef __SIZE_TYPE__ size_t;
+
+extern void *memcpy(void*, const void*, size_t);
+extern void *mempcpy(void*, const void*, size_t);
+extern void *memmove(void*, const void*, size_t);
+extern char *strcpy(char*, const char*);
+extern int memcmp(const void*, const void*, size_t);
+extern int strcmp(const char*, const char*);
+extern int strncmp(const char*, const char*, size_t);
+
+
+void test1 (void *ptr)
+{
+ if (memcpy(ptr,ptr,8) != ptr)
+ abort ();
+}
+
+void test2 (char *ptr)
+{
+ if (mempcpy(ptr,ptr,8) != ptr+8)
+ abort ();
+}
+
+void test3 (void *ptr)
+{
+ if (memmove(ptr,ptr,8) != ptr)
+ abort ();
+}
+
+void test4 (char *ptr)
+{
+ if (strcpy(ptr,ptr) != ptr)
+ abort ();
+}
+
+void test5 (void *ptr)
+{
+ if (memcmp(ptr,ptr,8) != 0)
+ abort ();
+}
+
+void test6 (const char *ptr)
+{
+ if (strcmp(ptr,ptr) != 0)
+ abort ();
+}
+
+void test7 (const char *ptr)
+{
+ if (strncmp(ptr,ptr,8) != 0)
+ abort ();
+}
+
+
+int main ()
+{
+ char buf[10];
+
+ test1 (buf);
+ test2 (buf);
+ test3 (buf);
+ test4 (buf);
+ test5 (buf);
+ test6 (buf);
+ test7 (buf);
+
+ return 0;
+}