Implemented RFE #1914254
authorspth <spth@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Fri, 26 Dec 2008 13:54:16 +0000 (13:54 +0000)
committerspth <spth@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Fri, 26 Dec 2008 13:54:16 +0000 (13:54 +0000)
git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@5301 4a8a32a2-be11-0410-ad9d-d568d2c75423

ChangeLog
device/include/string.h
src/z80/gen.c
src/z80/main.c

index d53ff3881d4c7aed18f8e92ed08068372cfa611a..56ad49cae70a8495b976f899f340144eaa998e29 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2008-12-26 Philipp Klaus Krause <pkk AT spth.de>
+       * src/z80/main.c,
+         src/z80/gen.c,
+         device/include/string.h: Implemented RFE #1914254
+
 2008-12-26 Philipp Klaus Krause <pkk AT spth.de>
        * device/lib/z80/Makefile.in,
          device/lib/Makefile.in,
index fd55d0ad7357aecf13ae1b32dc7cc1ea1e9a95a1..4ab59815d7b8e8a71a68fcdc76793324b996d18f 100644 (file)
@@ -50,6 +50,9 @@ extern char *strstr (char *, char *)  ;
 extern int   strlen (char *  )  ;
 extern char *strtok (char *, char *)  ;
 extern void *memcpy (void *, void *, size_t )  ;
+#ifdef SDCC_z80
+#define memcpy(dst, src, n) __builtin_memcpy(dst, src, n)
+#endif
 extern int   memcmp (void *, void *, size_t )  ;
 extern void *memset (void *, unsigned char  , size_t )  ;
 extern void *memmove (void *, void *, size_t )  ;
index d055c7a1cb419b62e341609c59b3ce77e52c7797..eac67d7b0b18e60694bbfce18dea1b95a692116e 100644 (file)
@@ -8196,7 +8196,7 @@ genBuiltInMemcpy (iCode *ic, int nParams, operand **pparams)
   operand *from, *to, *count;
   bool deInUse;
 
-  wassertl (nParams == 3, "Built-in memcpy must have two parameters");
+  wassertl (nParams == 3, "Built-in memcpy must have three parameters");
   to = pparams[2];
   from = pparams[1];
   count = pparams[0];
index 2f94e3615d7b93733eb1c1e6b46c18d94f948f1a..dbb465df01925332b4b3a373c1056ad9f39b71e5 100644 (file)
@@ -113,9 +113,8 @@ extern PORT z80_port;
 
 static builtins _z80_builtins[] = {
   /* Disabled for now.
-    { "__builtin_strcpy", "v", 2, {"cg*", "cg*" } },
-    { "__builtin_memcpy", "cg*", 3, {"cg*", "cg*", "ui" } },
-  */
+    { "__builtin_strcpy", "v", 2, {"cg*", "cg*" } },*/
+    { "__builtin_memcpy", "vg*", 3, {"vg*", "vg*", "ui" } },
     { NULL , NULL,0, {NULL}}
 };
 
@@ -827,7 +826,7 @@ PORT z80_port =
   0,                            /* leave == */
   TRUE,                         /* Array initializer support. */
   0,                            /* no CSE cost estimation yet */
-  _z80_builtins,                /* no builtin functions */
+  _z80_builtins,                /* builtin functions */
   GPOINTER,                     /* treat unqualified pointers as "generic" pointers */
   1,                            /* reset labelKey to 1 */
   1,                            /* globals & local static allowed */