diff --git a/compiler/generic/vm-fndb.lisp b/compiler/generic/vm-fndb.lisp
index 7ec7727c8e7da7f860e5df293d6f61f3836af717..787ea78eedbb8d61a9ed980367fd1e6c5a362eab 100644
--- a/compiler/generic/vm-fndb.lisp
+++ b/compiler/generic/vm-fndb.lisp
@@ -7,7 +7,7 @@
 ;;; Scott Fahlman (FAHLMAN@CMUC). 
 ;;; **********************************************************************
 ;;;
-;;; $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/generic/vm-fndb.lisp,v 1.7 1990/05/23 06:07:34 wlott Exp $
+;;; $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/generic/vm-fndb.lisp,v 1.8 1990/05/26 22:46:32 wlott Exp $
 ;;;
 ;;; This file defines the machine specific function signatures.
 ;;;
@@ -33,6 +33,25 @@
 	   system-area-pointer-p realp unsigned-byte-32-p signed-byte-32-p)
   (t) boolean (movable foldable flushable))
 
+;;; Introduce these predicates into the old compiler.  This is necessary
+;;; 'cause they are marked as foldable.
+;;; 
+#-new-compiler
+(macrolet ((frob (name type)
+	     `(defun ,name (thing)
+		(typep thing ',type))))
+  (frob simple-array-unsigned-byte-2-p (simple-array (unsigned-byte 2) (*)))
+  (frob simple-array-unsigned-byte-4-p (simple-array (unsigned-byte 4) (*)))
+  (frob simple-array-unsigned-byte-8-p (simple-array (unsigned-byte 8) (*)))
+  (frob simple-array-unsigned-byte-16-p (simple-array (unsigned-byte 16) (*)))
+  (frob simple-array-unsigned-byte-32-p (simple-array (unsigned-byte 32) (*)))
+  (frob simple-array-single-float-p (simple-array single-float (*)))
+  (frob simple-array-double-float-p (simple-array double-float (*)))
+  (frob system-area-pointer-p system-area-pointer)
+  (frob realp real)
+  (frob unsigned-byte-32-p (unsigned-byte 32))
+  (frob signed-byte-32-p (signed-byte 32))) 
+
 
 ;;;; Miscellaneous "sub-primitives":