diff --git a/compiler/array-tran.lisp b/compiler/array-tran.lisp
index af55bb16161c573719e5874d3cb1420697c72cf0..20f92d0f33cf6279e3f50b525d7505a28235be97 100644
--- a/compiler/array-tran.lisp
+++ b/compiler/array-tran.lisp
@@ -7,11 +7,11 @@
 ;;; Scott Fahlman or slisp-group@cs.cmu.edu.
 ;;;
 (ext:file-comment
-  "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/array-tran.lisp,v 1.9 1991/02/20 14:56:29 ram Exp $")
+  "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/array-tran.lisp,v 1.10 1991/04/24 23:51:00 ram Exp $")
 ;;;
 ;;; **********************************************************************
 ;;;
-;;; $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/array-tran.lisp,v 1.9 1991/02/20 14:56:29 ram Exp $
+;;; $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/array-tran.lisp,v 1.10 1991/04/24 23:51:00 ram Exp $
 ;;;
 ;;; This file contains array specific optimizers and transforms.
 ;;; 
@@ -94,6 +94,21 @@
 (defoptimizer (data-vector-set derive-type) ((array index new-value))
   (assert-new-value-type new-value array))
 
+;;; %WITH-ARRAY-DATA  --  derive-type optimizer.
+;;;
+;;;    Figure out the type of the data vector if we know the argument element
+;;; type.
+;;;
+(defoptimizer (%with-array-data derive-type) ((array start end))
+  (let ((atype (continuation-type array)))
+    (when (array-type-p atype)
+      (values-specifier-type
+       `(values (simple-array ,(type-specifier
+				(array-type-element-type atype))
+			      (*))
+		index index index)))))
+
+
 ;;; ARRAY-ROW-MAJOR-INDEX  --  derive-type optimizer.
 ;;;
 (defoptimizer (array-row-major-index derive-type) ((array &rest indices))