diff --git a/src/builtin_functions.c b/src/builtin_functions.c
index 04463681c5f3ecc5c15e7a9e19684528f4d3a70d..51cb1e1bc62bba8ffbe8081f5c8759799f2df207 100644
--- a/src/builtin_functions.c
+++ b/src/builtin_functions.c
@@ -5,7 +5,7 @@
 \*/
 /**/
 #include "global.h"
-RCSID("$Id: builtin_functions.c,v 1.356 2001/03/28 15:07:38 grubba Exp $");
+RCSID("$Id: builtin_functions.c,v 1.357 2001/04/01 15:40:23 grubba Exp $");
 #include "interpret.h"
 #include "svalue.h"
 #include "pike_macros.h"
@@ -2602,7 +2602,7 @@ static node *fix_aggregate_mapping_type(node *n)
 	  }
 #endif /* PIKE_DEBUG */
 	} else {
-	  copy_type(types[argno], arg->type);
+	  copy_pike_type(types[argno], arg->type);
 	}
 	argno = !argno;
 	/* Handle the special case where CAR & CDR are the same.
@@ -2840,7 +2840,7 @@ node *fix_object_program_type(node *n)
   struct pike_type *new_type = NULL;
 
   if (!n->type) {
-    copy_type(n->type, program_type_string);
+    copy_pike_type(n->type, program_type_string);
   }
   if (!(nn = CDR(n))) return NULL;
   if ((nn->token == F_ARG_LIST) && (!(nn = CAR(nn)))) return NULL;
diff --git a/src/language.yacc b/src/language.yacc
index 3f105e9e337b2afbf3d05622b105313f7af22c57..fc96d36b89a9d69c6ebbf5caa6e405630e13a5d3 100644
--- a/src/language.yacc
+++ b/src/language.yacc
@@ -112,7 +112,7 @@
 /* This is the grammar definition of Pike. */
 
 #include "global.h"
-RCSID("$Id: language.yacc,v 1.241 2001/04/01 15:14:06 grubba Exp $");
+RCSID("$Id: language.yacc,v 1.242 2001/04/01 15:40:23 grubba Exp $");
 #ifdef HAVE_MEMORY_H
 #include <memory.h>
 #endif
@@ -556,7 +556,8 @@ type_or_error: simple_type
 #endif /* PIKE_DEBUG */
     if(Pike_compiler->compiler_frame->current_type)
       free_type(Pike_compiler->compiler_frame->current_type); 
-    copy_type(Pike_compiler->compiler_frame->current_type, $1->u.sval.u.type);
+    copy_pike_type(Pike_compiler->compiler_frame->current_type,
+		   $1->u.sval.u.type);
     free_node($1);
   }
   ;
@@ -596,10 +597,10 @@ push_compiler_frame0: /* empty */
        !Pike_compiler->compiler_frame->previous->current_type)
     {
       yyerror("Internal compiler fault.");
-      copy_type(Pike_compiler->compiler_frame->current_type,
+      copy_pike_type(Pike_compiler->compiler_frame->current_type,
 		mixed_type_string);
     }else{
-      copy_type(Pike_compiler->compiler_frame->current_type,
+      copy_pike_type(Pike_compiler->compiler_frame->current_type,
 		Pike_compiler->compiler_frame->previous->current_type);
     }
   }
@@ -696,7 +697,7 @@ def: modifiers type_or_error optional_stars TOK_IDENTIFIER push_compiler_frame0
 		    Pike_compiler->compiler_pass, $4->u.sval.u.string->str);
 
 	    free_type(s);
-	    copy_type(s, id->type);
+	    copy_pike_type(s, id->type);
 
 	    fprintf(stderr, "Resulting type:\n");
 #ifdef PIKE_DEBUG
@@ -788,7 +789,7 @@ def: modifiers type_or_error optional_stars TOK_IDENTIFIER push_compiler_frame0
 		 * mksoftcastnode().
 		 */
 		free_type(local_node->type);
-		copy_type(local_node->type, mixed_type_string);
+		copy_pike_type(local_node->type, mixed_type_string);
 
 		check_args =
 		  mknode(F_COMMA_EXPR, check_args,
@@ -1780,8 +1781,8 @@ lambda: TOK_LAMBDA push_compiler_frame1
     debug_malloc_touch(Pike_compiler->compiler_frame->current_return_type);
     if(Pike_compiler->compiler_frame->current_return_type)
       free_type(Pike_compiler->compiler_frame->current_return_type);
-    copy_type(Pike_compiler->compiler_frame->current_return_type,
-	      any_type_string);
+    copy_pike_type(Pike_compiler->compiler_frame->current_return_type,
+		   any_type_string);
   }
   func_args
   {
@@ -1871,8 +1872,8 @@ local_function: TOK_IDENTIFIER push_compiler_frame1 func_args
     debug_malloc_touch(Pike_compiler->compiler_frame->current_return_type);
     if(Pike_compiler->compiler_frame->current_return_type)
       free_type(Pike_compiler->compiler_frame->current_return_type);
-    copy_type(Pike_compiler->compiler_frame->current_return_type,
-	      $<n>0->u.sval.u.type);
+    copy_pike_type(Pike_compiler->compiler_frame->current_return_type,
+		   $<n>0->u.sval.u.type);
 
 
     /***/
@@ -2232,7 +2233,7 @@ optional_create_arguments: /* empty */ { $$ = 0; }
 	   * mksoftcastnode().
 	   */
 	  free_type(local_node->type);
-	  copy_type(local_node->type, mixed_type_string);
+	  copy_pike_type(local_node->type, mixed_type_string);
 	  
 	  local_node = mksoftcastnode(Pike_compiler->compiler_frame->
 				      variable[e].type, local_node);
@@ -2900,8 +2901,8 @@ optional_block: ';' /* EMPTY */ { $$=0; }
     debug_malloc_touch(Pike_compiler->compiler_frame->current_return_type);
     if(Pike_compiler->compiler_frame->current_return_type)
       free_type(Pike_compiler->compiler_frame->current_return_type);
-    copy_type(Pike_compiler->compiler_frame->current_return_type,
-	      any_type_string);
+    copy_pike_type(Pike_compiler->compiler_frame->current_return_type,
+		   any_type_string);
 
     /* block code */
     $<number>1=Pike_compiler->num_used_modules;
@@ -3718,7 +3719,7 @@ int low_add_local_name(struct compiler_frame *frame,
 		  "(converted to type zero).");
       }
       free_type(type);
-      copy_type(type, zero_type_string);
+      copy_pike_type(type, zero_type_string);
     }
     frame->variable[frame->current_number_of_locals].type = type;
     frame->variable[frame->current_number_of_locals].name = str;
diff --git a/src/las.c b/src/las.c
index 8ef71ce6cdbf500fa8b06fa680aa0a36d9e5fabb..d8da8eb6572e0bb4d058796e349e971ac1df6964 100644
--- a/src/las.c
+++ b/src/las.c
@@ -5,7 +5,7 @@
 \*/
 /**/
 #include "global.h"
-RCSID("$Id: las.c,v 1.248 2001/03/28 17:59:36 grubba Exp $");
+RCSID("$Id: las.c,v 1.249 2001/04/01 15:40:23 grubba Exp $");
 
 #include "language.h"
 #include "interpret.h"
@@ -304,7 +304,7 @@ struct pike_type *find_return_type(node *n)
   if (n->token == F_RETURN) {
     if (CAR(n)) {
       if (CAR(n)->type) {
-	copy_type(a, CAR(n)->type);
+	copy_pike_type(a, CAR(n)->type);
       } else {
 #ifdef PIKE_DEBUG
 	if (l_flag > 2) {
@@ -312,10 +312,10 @@ struct pike_type *find_return_type(node *n)
 	  print_tree(n);
 	}
 #endif /* PIKE_DEBUG */
-	copy_type(a, mixed_type_string);
+	copy_pike_type(a, mixed_type_string);
       }
     } else {
-      copy_type(a, zero_type_string);
+      copy_pike_type(a, zero_type_string);
     }
     return a;
   }
@@ -395,14 +395,15 @@ static void add_node(node *n)
   while(probe) {
     if (probe == n) 
     {
-      fprintf(stderr, "add_node(%p == %p): Node already added!\n", probe, n);
+      fprintf(stderr, "add_node(%p == %p): Node already added!\n",
+	      (void *)probe, (void *)n);
       fprintf( stderr, "   %ld <-> %ld\n",
 	       DO_NOT_WARN((long)hval),
 	       DO_NOT_WARN((long)(n->hash % node_hash.size)) );
       probe = node_hash.table[hval];
       while( probe )
       {
-        fprintf(stderr, "    %p\n", probe);
+        fprintf(stderr, "    %p\n", (void *)probe);
         probe = probe->next;
       }
       fatal( "Node already added!\n" );
@@ -480,11 +481,11 @@ static node *freeze_node(node *orig)
 	  /* Use the new type if it's stricter. */
 	  if (pike_types_le(orig->type, n->type)) {
 	    free_type(n->type);
-	    copy_type(n->type, orig->type);
+	    copy_pike_type(n->type, orig->type);
 	  }
 	} else {
 	  /* This probably doesn't happen, but... */
-	  copy_type(n->type, orig->type);
+	  copy_pike_type(n->type, orig->type);
 	}
       }
       if (!found) {
@@ -563,7 +564,7 @@ void free_all_nodes(void)
 	      if(!cumulative_parse_error)
 	      {
 		fprintf(stderr,"Free node at %p, (%s:%d) (token=%d).\n",
-			tmp, tmp->current_file->str, tmp->line_number,
+			(void *)tmp, tmp->current_file->str, tmp->line_number,
 			tmp->token);
 
 		debug_malloc_dump_references(tmp,0,2,0);
@@ -802,7 +803,7 @@ node *debug_check_node_hash(node *n)
 #if defined(PIKE_DEBUG) && defined(SHARED_NODES)
   if (n && !(n->tree_info & (OPT_DEFROSTED|OPT_NOT_SHARED)) && (n->hash != hash_node(n))) {
     fprintf(stderr,"Bad node hash at %p, (%s:%d) (token=%d).\n",
-	    n, n->current_file->str, n->line_number,
+	    (void *)n, n->current_file->str, n->line_number,
 	    n->token);
     debug_malloc_dump_references(n,0,0,0);
     print_tree(n);
@@ -927,7 +928,7 @@ node *debug_mknode(short token, node *a, node *b)
     break;
 
   case F_POP_VALUE:
-    copy_type(res->type, void_type_string);
+    copy_pike_type(res->type, void_type_string);
     
     if(a) res->tree_info |= a->tree_info;
     if(b) res->tree_info |= b->tree_info;
@@ -1061,7 +1062,7 @@ node *debug_mkstrnode(struct pike_string *str)
 {
   node *res = mkemptynode();
   res->token = F_CONSTANT;
-  copy_type(res->type, string_type_string);
+  copy_pike_type(res->type, string_type_string);
   res->node_info = 0;
   res->u.sval.type = T_STRING;
 #ifdef __CHECKER__
@@ -1107,7 +1108,7 @@ node *debug_mkfloatnode(FLOAT_TYPE foo)
 {
   node *res = mkemptynode();
   res->token = F_CONSTANT;
-  copy_type(res->type, float_type_string);
+  copy_pike_type(res->type, float_type_string);
   res->u.sval.type = T_FLOAT;
 #ifdef __CHECKER__
   res->u.sval.subtype = 0;
@@ -1165,7 +1166,7 @@ node *debug_mklocalnode(int var, int depth)
 
   f=Pike_compiler->compiler_frame;
   for(e=0;e<depth;e++) f=f->previous;
-  copy_type(res->type, f->variable[var].type);
+  copy_pike_type(res->type, f->variable[var].type);
 
   res->node_info = OPT_NOT_CONST | OPT_NOT_SHARED;
   res->tree_info = res->node_info;
@@ -1228,7 +1229,7 @@ node *debug_mktrampolinenode(int i)
 {
   node *res = mkemptynode();
   res->token = F_TRAMPOLINE;
-  copy_type(res->type, ID_FROM_INT(Pike_compiler->new_program, i)->type);
+  copy_pike_type(res->type, ID_FROM_INT(Pike_compiler->new_program, i)->type);
 
   /* FIXME */
   if(IDENTIFIER_IS_CONSTANT(ID_FROM_INT(Pike_compiler->new_program, i)->identifier_flags))
@@ -1268,7 +1269,7 @@ node *debug_mkexternalnode(struct program *parent_prog, int i)
   }
 #endif
 
-  copy_type(res->type, id->type);
+  copy_pike_type(res->type, id->type);
 
   /* FIXME */
   if(IDENTIFIER_IS_CONSTANT(id->identifier_flags))
@@ -1328,7 +1329,7 @@ node *debug_mkcastnode(struct pike_type *type, node *n)
 
   res = mkemptynode();
   res->token = F_CAST;
-  copy_type(res->type, type);
+  copy_pike_type(res->type, type);
 
   if(match_types(object_type_string, type) ||
      match_types(program_type_string, type))
@@ -1387,7 +1388,7 @@ node *debug_mksoftcastnode(struct pike_type *type, node *n)
 
   res = mkemptynode();
   res->token = F_SOFT_CAST;
-  copy_type(res->type, type);
+  copy_pike_type(res->type, type);
 
   res->tree_info |= n->tree_info;
 
@@ -1804,9 +1805,10 @@ node *debug_mktypenode(struct pike_type *t)
 {
   node *res = mkemptynode();
   res->token = F_CONSTANT;
-  copy_type(res->u.sval.u.type, t);
+  copy_pike_type(res->u.sval.u.type, t);
   res->u.sval.type = T_TYPE;
-  copy_type(res->type, type_type_string);
+  /* FIXME: Should be type(val) */
+  copy_pike_type(res->type, type_type_string);
   return freeze_node(res);
 }
 
@@ -1917,7 +1919,7 @@ node *copy_node(node *n)
     b=mknewintnode(0);
     if(b->type) free_type(b->type);
     *b=*n;
-    copy_type(b->type, n->type);
+    copy_pike_type(b->type, n->type);
     return b;
 
   default:
@@ -1947,7 +1949,7 @@ node *copy_node(node *n)
       b=mknode(n->token, CAR(n), CDR(n));
     }
     if(n->type)
-      copy_type(b->type, n->type);
+      copy_pike_type(b->type, n->type);
     else
       b->type=0;
 
@@ -2012,7 +2014,7 @@ node *defrost_node(node *n)
     b=mknewintnode(0);
     if(b->type) free_type(b->type);
     *b=*n;
-    copy_type(b->type, n->type);
+    copy_pike_type(b->type, n->type);
     return b;
 
   default:
@@ -2023,7 +2025,7 @@ node *defrost_node(node *n)
     if(cdr_is_node(n)) _CDR(b)=copy_node(CDR(n));
 
     if(n->type)
-      copy_type(b->type, n->type);
+      copy_pike_type(b->type, n->type);
     else
       b->type=0;
 
@@ -2035,7 +2037,7 @@ node *defrost_node(node *n)
     _CAR(b)=copy_node(CAR(n));
     _CDR(b)=copy_node(CDR(n));
     if(n->type)
-      copy_type(b->type, n->type);
+      copy_pike_type(b->type, n->type);
     else
       b->type=0;
     break;
@@ -3156,24 +3158,24 @@ void fix_type_field(node *n)
     /* FALL_THROUGH */
   case F_CAST:
     /* Type-field is correct by definition. */
-    copy_type(n->type, old_type);
+    copy_pike_type(n->type, old_type);
     break;
 
   case F_LAND:
   case F_LOR:
     if (!CAR(n) || CAR(n)->type == void_type_string) {
       yyerror("Conditional uses void expression.");
-      copy_type(n->type, mixed_type_string);
+      copy_pike_type(n->type, mixed_type_string);
       break;
     }
     if(!match_types(CAR(n)->type, mixed_type_string))
       yyerror("Bad conditional expression.");
 
     if (!CDR(n) || CDR(n)->type == void_type_string)
-      copy_type(n->type, void_type_string);
+      copy_pike_type(n->type, void_type_string);
     else if(n->token == F_LAND || CAR(n)->type == CDR(n)->type)
     {
-      copy_type(n->type, CDR(n)->type);
+      copy_pike_type(n->type, CDR(n)->type);
     }else{
       n->type = or_pike_types(CAR(n)->type, CDR(n)->type, 0);
     }
@@ -3182,7 +3184,7 @@ void fix_type_field(node *n)
   case F_ASSIGN:
     if (!CAR(n) || (CAR(n)->type == void_type_string)) {
       my_yyerror("Assigning a void expression.");
-      copy_type(n->type, void_type_string);
+      copy_pike_type(n->type, void_type_string);
       break;
     } else if(CAR(n) && CDR(n)) {
       /* Ensure that the type-fields are up to date. */
@@ -3219,7 +3221,7 @@ void fix_type_field(node *n)
     if (!CAR(n) || (CAR(n)->type == void_type_string)) {
       my_yyerror("Indexing a void expression.");
       /* The optimizer converts this to an expression returning 0. */
-      copy_type(n->type, zero_type_string);
+      copy_pike_type(n->type, zero_type_string);
     } else {
       type_a=CAR(n)->type;
       type_b=CDR(n)->type;
@@ -3243,7 +3245,7 @@ void fix_type_field(node *n)
 
       args = 0;
 
-      copy_type(f, CAR(n)->type);
+      copy_pike_type(f, CAR(n)->type);
 
       f = new_check_call(CAR(n), &args, f, CDR(n));
 
@@ -3374,7 +3376,7 @@ void fix_type_field(node *n)
 	if(TEST_COMPAT(0,6))
 	{
 	  free_type(s);
-	  copy_type(n->type, mixed_type_string);
+	  copy_pike_type(n->type, mixed_type_string);
 	  break;
 	}
 	my_yyerror("Too many arguments to %s.",name);
@@ -3394,7 +3396,7 @@ void fix_type_field(node *n)
       free_type(s);
 #endif /* USE_PIKE_TYPE && NEW_ARG_CHECK */
     }
-    copy_type(n->type, mixed_type_string);
+    copy_pike_type(n->type, mixed_type_string);
     break;
 
   case '?':
@@ -3407,13 +3409,13 @@ void fix_type_field(node *n)
        CADR(n)->type == void_type_string ||
        CDDR(n)->type == void_type_string)
     {
-      copy_type(n->type, void_type_string);
+      copy_pike_type(n->type, void_type_string);
       break;
     }
     
     if(CADR(n)->type == CDDR(n)->type)
     {
-      copy_type(n->type, CADR(n)->type);
+      copy_pike_type(n->type, CADR(n)->type);
       break;
     }
 
@@ -3478,7 +3480,7 @@ void fix_type_field(node *n)
       if (!(op_node = find_module_identifier(op_string, 0))) {
 	my_yyerror("Internally used efun undefined for token %d: %s()",
 		   n->token, op_string->str);
-	copy_type(n->type, mixed_type_string);
+	copy_pike_type(n->type, mixed_type_string);
 	free_string(op_string);
 	break;
       }
@@ -3516,7 +3518,7 @@ void fix_type_field(node *n)
       free_type(call_type);
       free_string(op_string);
     }
-    copy_type(n->type, mixed_type_string);
+    copy_pike_type(n->type, mixed_type_string);
     break;
   case F_RANGE:
   case F_INC:
@@ -3526,9 +3528,9 @@ void fix_type_field(node *n)
     if (CAR(n)) {
       /* The expression gets the type from the variable. */
       /* FIXME: Ought to strip non-applicable subtypes from the type. */
-      copy_type(n->type, CAR(n)->type);
+      copy_pike_type(n->type, CAR(n)->type);
     } else {
-      copy_type(n->type, mixed_type_string);
+      copy_pike_type(n->type, mixed_type_string);
     }
     break;
 
@@ -3540,7 +3542,7 @@ void fix_type_field(node *n)
 	sub_node(n);
 #endif /* SHARED_NODES */
 	_CAR(n) = mkintnode(0);
-	copy_type(n->type, CAR(n)->type);
+	copy_pike_type(n->type, CAR(n)->type);
 #ifdef SHARED_NODES
 	if (!(n->tree_info & OPT_NOT_SHARED)) {
 	  n->hash = hash_node(n);
@@ -3576,7 +3578,7 @@ void fix_type_field(node *n)
 	}
       }
     }
-    copy_type(n->type, void_type_string);
+    copy_pike_type(n->type, void_type_string);
     break;
 
   case F_CASE:
@@ -3617,7 +3619,7 @@ void fix_type_field(node *n)
   case F_BREAK:
   case F_DEFAULT:
   case F_POP_VALUE:
-    copy_type(n->type, void_type_string);
+    copy_pike_type(n->type, void_type_string);
     break;
 
   case F_DO:
@@ -3625,7 +3627,7 @@ void fix_type_field(node *n)
       yyerror("do - while(): Conditional expression is void.");
     } else if(!match_types(CDR(n)->type, mixed_type_string))
       yyerror("Bad conditional expression do - while().");
-    copy_type(n->type, void_type_string);
+    copy_pike_type(n->type, void_type_string);
     break;
     
   case F_FOR:
@@ -3633,7 +3635,7 @@ void fix_type_field(node *n)
       yyerror("for(): Conditional expression is void.");
     } else if(!match_types(CAR(n)->type, mixed_type_string))
       yyerror("Bad conditional expression for().");
-    copy_type(n->type, void_type_string);
+    copy_pike_type(n->type, void_type_string);
     break;
 
   case F_SWITCH:
@@ -3641,7 +3643,7 @@ void fix_type_field(node *n)
       yyerror("switch(): Conditional expression is void.");
     } else if(!match_types(CAR(n)->type, mixed_type_string))
       yyerror("Bad switch expression.");
-    copy_type(n->type, void_type_string);
+    copy_pike_type(n->type, void_type_string);
     break;
 
   case F_CONSTANT:
@@ -3786,7 +3788,7 @@ void fix_type_field(node *n)
       }
     }
   foreach_type_check_done:
-    copy_type(n->type, void_type_string);
+    copy_pike_type(n->type, void_type_string);
     break;
 
   case F_SSCANF:
@@ -3818,7 +3820,7 @@ void fix_type_field(node *n)
     break;
 
   case F_UNDEFINED:
-    copy_type(n->type, zero_type_string);
+    copy_pike_type(n->type, zero_type_string);
     break;
 
   case F_ARG_LIST:
@@ -3831,24 +3833,24 @@ void fix_type_field(node *n)
     if(!CAR(n) || CAR(n)->type==void_type_string)
     {
       if(CDR(n))
-	copy_type(n->type, CDR(n)->type);
+	copy_pike_type(n->type, CDR(n)->type);
       else
-	copy_type(n->type, void_type_string);
+	copy_pike_type(n->type, void_type_string);
       break;
     }
 
     if(!CDR(n) || CDR(n)->type == void_type_string)
     {
       if(CAR(n))
-	copy_type(n->type, CAR(n)->type);
+	copy_pike_type(n->type, CAR(n)->type);
       else
-	copy_type(n->type, void_type_string);
+	copy_pike_type(n->type, void_type_string);
       break;
     }
     if (n->token == F_ARG_LIST) {
       n->type = or_pike_types(CAR(n)->type, CDR(n)->type, 0);
     } else {
-      copy_type(n->type, CDR(n)->type);
+      copy_pike_type(n->type, CDR(n)->type);
     }
     break;
 
@@ -3866,7 +3868,7 @@ void fix_type_field(node *n)
   case F_CATCH:
     /* FALL_THROUGH */
   default:
-    copy_type(n->type, mixed_type_string);
+    copy_pike_type(n->type, mixed_type_string);
   }
 
   if (n->type != old_type) {
@@ -5031,7 +5033,7 @@ static node *eval(node *n)
 				     pike_types_le(n->type,new->type)))) {
 	if (new->type)
 	  free_type(new->type);
-	copy_type(new->type, n->type);
+	copy_pike_type(new->type, n->type);
       }
     }
     free_node(n);
diff --git a/src/operators.c b/src/operators.c
index 148b9a943db823c5202e8e90ea97cb6b0271f756..ceb35864b72b1c0e013fb3e17bca8c51d52b7519 100644
--- a/src/operators.c
+++ b/src/operators.c
@@ -6,7 +6,7 @@
 /**/
 #include "global.h"
 #include <math.h>
-RCSID("$Id: operators.c,v 1.133 2001/03/28 15:07:39 grubba Exp $");
+RCSID("$Id: operators.c,v 1.134 2001/04/01 15:40:22 grubba Exp $");
 #include "interpret.h"
 #include "svalue.h"
 #include "multiset.h"
@@ -1731,8 +1731,8 @@ PMOD_EXPORT void o_xor(void)
     /* a ^ b  ==  (a&~b)|(~a&b) */
     struct pike_type *a;
     struct pike_type *b;
-    copy_type(a, sp[-2].u.type);
-    copy_type(b, sp[-1].u.type);
+    copy_pike_type(a, sp[-2].u.type);
+    copy_pike_type(b, sp[-1].u.type);
     o_compl();		/* ~b */
     o_and();		/* a&~b */
     push_type_value(a);
diff --git a/src/pike_types.c b/src/pike_types.c
index 4805bc6da6746aac235ea49dfa8415ddbc970407..401365d33790fc623fdb9a34552e4a2ed8d69556 100644
--- a/src/pike_types.c
+++ b/src/pike_types.c
@@ -5,7 +5,7 @@
 \*/
 /**/
 #include "global.h"
-RCSID("$Id: pike_types.c,v 1.176 2001/03/31 16:07:39 grubba Exp $");
+RCSID("$Id: pike_types.c,v 1.177 2001/04/01 15:40:21 grubba Exp $");
 #include <ctype.h>
 #include "svalue.h"
 #include "pike_types.h"
@@ -578,7 +578,7 @@ void debug_push_type_name(struct pike_string *name)
 
 void debug_push_finished_type(struct pike_type *t)
 {
-  copy_type(*(++Pike_compiler->type_stackp), t);
+  copy_pike_type(*(++Pike_compiler->type_stackp), t);
 
   TYPE_STACK_DEBUG("push_finished_type");
 }
@@ -3437,7 +3437,7 @@ struct pike_type *index_type(struct pike_type *type,
   clear_markers();
   t = low_index_type(type, index_type, n);
   if(!t) {
-    copy_type(t, mixed_type_string);
+    copy_pike_type(t, mixed_type_string);
   }
   return t;
 }
@@ -3465,7 +3465,7 @@ static struct pike_type *low_array_value_type(struct pike_type *arr_t)
   if (arr_t->type != T_ARRAY)
     return res;
 
-  copy_type(sub_t, arr_t->car);
+  copy_pike_type(sub_t, arr_t->car);
 
   if (res) {
     struct pike_type *new = or_pike_types(res, sub_t, 1);
@@ -3480,7 +3480,7 @@ struct pike_type *array_value_type(struct pike_type *array_type)
 {
   struct pike_type *t = low_array_value_type(array_type);
   if (!t) {
-    copy_type(t, mixed_type_string);
+    copy_pike_type(t, mixed_type_string);
   }
   return t;
 }
@@ -3560,7 +3560,7 @@ static struct pike_type *debug_low_key_type(struct pike_type *t, node *n)
 
   case T_MAPPING:
   case T_MULTISET:
-    copy_type(t, t->car);
+    copy_pike_type(t, t->car);
     return t;
   }
 }
@@ -3571,7 +3571,7 @@ struct pike_type *key_type(struct pike_type *type, node *n)
   clear_markers();
   t = low_key_type(type,n);
   if(!t) {
-    copy_type(t, mixed_type_string);
+    copy_pike_type(t, mixed_type_string);
   }
   return t;
 }
@@ -3836,7 +3836,7 @@ struct pike_type *new_check_call(node *fun, int *argno,
 	/* Not strict arg */
       }
     }
-    copy_type(tmp_type, type->cdr);
+    copy_pike_type(tmp_type, type->cdr);
     free_type(type);
     type = tmp_type;
     (*argno)++;
@@ -3925,16 +3925,16 @@ struct pike_type *get_type_of_svalue(struct svalue *s)
   case T_FUNCTION:
     if(s->subtype == FUNCTION_BUILTIN)
     {
-      copy_type(ret, s->u.efun->type);
+      copy_pike_type(ret, s->u.efun->type);
     }else{
       struct program *p;
 
       p=s->u.object->prog;
       if(!p)
       {
-	copy_type(ret, zero_type_string);
+	copy_pike_type(ret, zero_type_string);
       }else{
-	copy_type(ret, ID_FROM_INT(p,s->subtype)->type);
+	copy_pike_type(ret, ID_FROM_INT(p,s->subtype)->type);
       }
     }
     return ret;
@@ -3954,7 +3954,7 @@ struct pike_type *get_type_of_svalue(struct svalue *s)
       int i;
 
       /* FIXME: Circular structures? */
-      copy_type(arg_type, zero_type_string);
+      copy_pike_type(arg_type, zero_type_string);
       for (i = 0; i < a->size; i++) {
 	struct pike_type *tmp1 = get_type_of_svalue(a->item+i);
 	struct pike_type *tmp2 = or_pike_types(arg_type, tmp1, 1);
@@ -3964,9 +3964,9 @@ struct pike_type *get_type_of_svalue(struct svalue *s)
       }
 #else /* !0 */
       if (a->size)
-	copy_type(arg_type, mixed_type_string);
+	copy_pike_type(arg_type, mixed_type_string);
       else
-	copy_type(arg_type, zero_type_string);
+	copy_pike_type(arg_type, zero_type_string);
 #endif /* 0 */
       type_stack_mark();
       push_finished_type(arg_type);
@@ -4018,7 +4018,7 @@ struct pike_type *get_type_of_svalue(struct svalue *s)
       push_int_type(s->u.integer, s->u.integer);
       return pop_unfinished_type();
     }else{
-      copy_type(ret, zero_type_string);
+      copy_pike_type(ret, zero_type_string);
       return ret;
     }
 
@@ -7628,16 +7628,16 @@ struct pike_type *get_type_of_svalue(struct svalue *s)
   case T_FUNCTION:
     if(s->subtype == FUNCTION_BUILTIN)
     {
-      copy_type(ret, s->u.efun->type);
+      copy_pike_type(ret, s->u.efun->type);
     }else{
       struct program *p;
 
       p=s->u.object->prog;
       if(!p)
       {
-	copy_type(ret, zero_type_string);
+	copy_pike_type(ret, zero_type_string);
       }else{
-	copy_type(ret, ID_FROM_INT(p,s->subtype)->type);
+	copy_pike_type(ret, ID_FROM_INT(p,s->subtype)->type);
       }
     }
     return ret;
@@ -7667,9 +7667,9 @@ struct pike_type *get_type_of_svalue(struct svalue *s)
       }
 #else /* !0 */
       if (a->size)
-	copy_type(arg_type, mixed_type_string);
+	copy_pike_type(arg_type, mixed_type_string);
       else
-	copy_type(arg_type, zero_type_string);
+	copy_pike_type(arg_type, zero_type_string);
 #endif /* 0 */
       type_stack_mark();
       push_finished_type(arg_type);
@@ -7723,7 +7723,7 @@ struct pike_type *get_type_of_svalue(struct svalue *s)
       push_int_type(s->u.integer, s->u.integer);
       return pop_unfinished_type();
     }else{
-      copy_type(ret, zero_type_string);
+      copy_pike_type(ret, zero_type_string);
     }
     return ret;
 
diff --git a/src/pike_types.h b/src/pike_types.h
index 24ef5a83b2904b5f7a4693413c7e17c8f86f2157..1fea0d94bb7d3fd5577db55a621f3edb9d9a8ba9 100644
--- a/src/pike_types.h
+++ b/src/pike_types.h
@@ -5,7 +5,7 @@
 \*/
 
 /*
- * $Id: pike_types.h,v 1.70 2001/03/31 01:12:48 grubba Exp $
+ * $Id: pike_types.h,v 1.71 2001/04/01 15:40:22 grubba Exp $
  */
 #ifndef PIKE_TYPES_H
 #define PIKE_TYPES_H
@@ -40,9 +40,9 @@ struct pike_type
 
 void debug_free_type(struct pike_type *t);
 #ifdef DEBUG_MALLOC
-#define copy_type(D, S) add_ref((struct pike_type *)debug_malloc_pass(D = (S)))
+#define copy_pike_type(D, S) add_ref((struct pike_type *)debug_malloc_pass(D = (S)))
 #else /* !DEBUG_MALLOC */
-#define copy_type(D, S)	add_ref(D = (S))
+#define copy_pike_type(D, S)	add_ref(D = (S))
 #endif /* DEBUG_MALLOC */
 #define CONSTTYPE(X) make_pike_type(X)
 
@@ -68,7 +68,7 @@ extern struct pike_type **pike_type_mark_stack[PIKE_TYPE_STACK_SIZE/4];
  * to avoid circularities with svalue.h and this file.
  */
 #define free_type(T)	free_string(T)
-#define copy_type(D, S)	copy_shared_string(D, S)
+#define copy_pike_type(D, S)	copy_shared_string(D, S)
 #define check_type_string	debug_check_type_string
 
 #define CONSTTYPE(X) make_shared_binary_string(X,CONSTANT_STRLEN(X))
@@ -177,7 +177,7 @@ extern struct pike_type_location *all_pike_type_locations;
       type_.next = all_pike_type_locations;	\
       all_pike_type_locations = &type_;		\
     }						\
-    copy_type((T), type_.t);			\
+    copy_pike_type((T), type_.t);		\
   } while(0)
 #else /* !DEBUG_MALLOC */
 #define MAKE_CONSTANT_TYPE(T, X) do {	\
@@ -185,7 +185,7 @@ extern struct pike_type_location *all_pike_type_locations;
     if (!type_) {			\
       type_ = CONSTTYPE(X);		\
     }					\
-    copy_type((T), type_);		\
+    copy_pike_type((T), type_);		\
   } while(0)
 #endif /* DEBUG_MALLOC */
 #else /* !USE_PIKE_TYPE */
diff --git a/src/program.c b/src/program.c
index f169b89cbd3940bdb25a9128be1b4f5a7ce5287f..38367f10216fc06bd5dcf5a6422ee781591e5ecb 100644
--- a/src/program.c
+++ b/src/program.c
@@ -5,7 +5,7 @@
 \*/
 /**/
 #include "global.h"
-RCSID("$Id: program.c,v 1.307 2001/03/28 17:58:06 grubba Exp $");
+RCSID("$Id: program.c,v 1.308 2001/04/01 15:40:21 grubba Exp $");
 #include "program.h"
 #include "object.h"
 #include "dynamic_buffer.h"
@@ -1310,8 +1310,8 @@ void low_start_new_program(struct program *p,
   Pike_compiler->num_parse_error=0;
 
   push_compiler_frame(0);
-  copy_type(Pike_compiler->compiler_frame->current_return_type,
-	    void_type_string);
+  copy_pike_type(Pike_compiler->compiler_frame->current_return_type,
+		 void_type_string);
 
   debug_malloc_touch(Pike_compiler->fake_object);
   debug_malloc_touch(Pike_compiler->fake_object->storage);
@@ -2564,7 +2564,7 @@ int low_define_variable(struct pike_string *name,
 #endif
 
   copy_shared_string(dummy.name, name);
-  copy_type(dummy.type, type);
+  copy_pike_type(dummy.type, type);
   dummy.identifier_flags = 0;
   dummy.run_time_type=run_time_type;
   dummy.func.offset=offset - Pike_compiler->new_program->inherits[0].storage_offset;
@@ -2677,7 +2677,7 @@ int define_variable(struct pike_string *name,
       struct identifier *id;
       id=ID_FROM_INT(Pike_compiler->new_program,n);
       free_type(id->type);
-      copy_type(id->type, type);
+      copy_pike_type(id->type, type);
       return n;
     }
   }
@@ -2869,7 +2869,7 @@ PMOD_EXPORT int add_constant(struct pike_string *name,
     dummy.func.offset=store_constant(c, 0, 0);
   }
   else {
-    copy_type(dummy.type, mixed_type_string);
+    copy_pike_type(dummy.type, mixed_type_string);
     dummy.run_time_type=T_MIXED;
     dummy.func.offset=-1;
   }
@@ -3136,7 +3136,7 @@ INT32 define_function(struct pike_string *name,
       funp->opt_flags &= opt_flags;
 
       free_type(funp->type);
-      copy_type(funp->type, type);
+      copy_pike_type(funp->type, type);
     }else{
 
       if((ref.id_flags & ID_NOMASK)
@@ -3156,7 +3156,7 @@ INT32 define_function(struct pike_string *name,
 
       /* Otherwise we make a new definition */
       copy_shared_string(fun.name, name);
-      copy_type(fun.type, type);
+      copy_pike_type(fun.type, type);
 
       fun.run_time_type=T_FUNCTION;
 
@@ -3226,7 +3226,7 @@ make_a_new_def:
   /* define a new function */
 
   copy_shared_string(fun.name, name);
-  copy_type(fun.type, type);
+  copy_pike_type(fun.type, type);
 
   fun.identifier_flags=function_flags;
   fun.run_time_type=T_FUNCTION;