diff --git a/compiler/tn.lisp b/compiler/tn.lisp
index a7b1b0401eab59a0dba4462277fd7b122a262c2d..9fe5a18796eab434e66c9b036c1da4a06dc87c0f 100644
--- a/compiler/tn.lisp
+++ b/compiler/tn.lisp
@@ -84,28 +84,15 @@
     res))
 
 
-;;; Make-Restricted-TN  --  Interface
-;;;
-;;;    Create a packed TN restricted to the SC with number SCN.
-;;;
-(defun make-restricted-tn (scn)
-  (declare (type sc-number scn))
-  (let* ((component (component-info *compile-component*))
-	 (res (make-tn (incf (ir2-component-global-tn-counter component))
-		       :normal nil (svref *sc-numbers* scn))))
-    (push-in tn-next res (ir2-component-restricted-tns component))
-    res))
-
-
 ;;; MAKE-REPRESENTATION-TN  --  Interface
 ;;;
 ;;;    Create a normal packed TN with representation indicated by SCN.
 ;;;
-(defun make-representation-tn (scn)
-  (declare (type sc-number scn))
+(defun make-representation-tn (ptype scn)
+  (declare (type primitive-type ptype) (type sc-number scn))
   (let* ((component (component-info *compile-component*))
 	 (res (make-tn (incf (ir2-component-global-tn-counter component))
-		       :normal nil (svref *sc-numbers* scn))))
+		       :normal ptype (svref *sc-numbers* scn))))
     (push-in tn-next res (ir2-component-normal-tns component))
     res))
 
@@ -114,18 +101,34 @@
 ;;;
 ;;;    Create a TN wired to a particular location in an SC.  We set the Offset
 ;;; and FSC to record where it goes, and then put it on the current component's
-;;; Wired-TNs list.
+;;; Wired-TNs list.  Ptype is the TN's primitive-type, which may be NIL in VOP
+;;; temporaries.
 ;;;
-(defun make-wired-tn (scn offset)
-  (declare (type sc-number scn) (type unsigned-byte offset))
+(defun make-wired-tn (ptype scn offset)
+  (declare (type (or primitive-type null) ptype)
+	   (type sc-number scn) (type unsigned-byte offset))
   (let* ((component (component-info *compile-component*))
 	 (res (make-tn (incf (ir2-component-global-tn-counter component))
-		       :normal nil (svref *sc-numbers* scn))))
+		       :normal ptype (svref *sc-numbers* scn))))
     (setf (tn-offset res) offset)
     (push-in tn-next res (ir2-component-wired-tns component))
     res))
 
 
+;;; Make-Restricted-TN  --  Interface
+;;;
+;;;    Create a packed TN restricted to the SC with number SCN.  Ptype is as
+;;; for MAKE-WIRED-TN.
+;;;
+(defun make-restricted-tn (ptype scn)
+  (declare (type (or primitive-type null) ptype) (type sc-number scn))
+  (let* ((component (component-info *compile-component*))
+	 (res (make-tn (incf (ir2-component-global-tn-counter component))
+		       :normal ptype (svref *sc-numbers* scn))))
+    (push-in tn-next res (ir2-component-restricted-tns component))
+    res))
+
+
 ;;; Environment-Live-TN  --  Interface
 ;;;
 ;;;    Make TN be live throughout environment.  TN must be referenced only in