aboutsummaryrefslogtreecommitdiff
path: root/libiberty/bcopy.c
diff options
context:
space:
mode:
authorJason Merrill <jason@gcc.gnu.org>1997-08-21 18:57:35 -0400
committerJason Merrill <jason@gcc.gnu.org>1997-08-21 18:57:35 -0400
commit6599da043e22e96ac830fb50a61c1b6d95d1b142 (patch)
treea3b19970338bdae580faff126a716e1d5520400c /libiberty/bcopy.c
parent8975416cfb6269ad94b6330d42960cca8b0925b7 (diff)
downloadgcc-6599da043e22e96ac830fb50a61c1b6d95d1b142.zip
gcc-6599da043e22e96ac830fb50a61c1b6d95d1b142.tar.gz
gcc-6599da043e22e96ac830fb50a61c1b6d95d1b142.tar.bz2
Initial revision
From-SVN: r14877
Diffstat (limited to 'libiberty/bcopy.c')
-rw-r--r--libiberty/bcopy.c35
1 files changed, 35 insertions, 0 deletions
diff --git a/libiberty/bcopy.c b/libiberty/bcopy.c
new file mode 100644
index 0000000..b655363
--- /dev/null
+++ b/libiberty/bcopy.c
@@ -0,0 +1,35 @@
+/* bcopy -- copy memory regions of arbitary length
+
+NAME
+ bcopy -- copy memory regions of arbitrary length
+
+SYNOPSIS
+ void bcopy (char *in, char *out, int length)
+
+DESCRIPTION
+ Copy LENGTH bytes from memory region pointed to by IN to memory
+ region pointed to by OUT.
+
+BUGS
+ Significant speed improvements can be made in some cases by
+ implementing copies of multiple bytes simultaneously, or unrolling
+ the copy loop.
+
+*/
+
+void
+bcopy (src, dest, len)
+ register char *src, *dest;
+ int len;
+{
+ if (dest < src)
+ while (len--)
+ *dest++ = *src++;
+ else
+ {
+ char *lasts = src + (len-1);
+ char *lastd = dest + (len-1);
+ while (len--)
+ *(char *)lastd-- = *(char *)lasts--;
+ }
+}