diff --git a/src/peep.c b/src/peep.c
index 9f0d259b6cbc7e800516458ae14630985d9041d5..66c1faf5f615567df9cc671a8500fe00dd4f4274 100644
--- a/src/peep.c
+++ b/src/peep.c
@@ -326,17 +326,15 @@ INT32 assemble(int store_linenumbers)
 
   labels=xalloc(sizeof(INT32) * 4 * (max_label+2));
   jumps = labels + max_label + 2;
-  uses = jumps + max_label + 2;
-  aliases = uses + max_label + 2;
+  aliases = jumps + max_label + 2;
+  uses = aliases + max_label + 2;
   while(relabel)
   {
     /* First do the relabel pass. */
-    for(e=0;e<=max_label;e++)
-    {
-      labels[e]=jumps[e]= aliases[e] = -1;
-      uses[e]=0;
-    }
-    
+    /* Set labels, jumps and aliases to all -1. */
+    memset(labels, 0xff, ((max_label + 2) * 3) * sizeof(INT32));
+    memset(uses, 0x00, (max_label + 2) * sizeof(INT32));
+
     c=(p_instr *)instrbuf.s.str;
     length=instrbuf.s.len / sizeof(p_instr);
     for(e=0;e<length;e++)