anchor.diff:  	       (declare (ignore value))
   	       (let* ((input (car (cleavir-ir:inputs instruction)))
   		      (output (car (cleavir-ir:outputs instruction)))
  -		      (using-instruction (car (cleavir-ir:using-instructions output))))
  -		 (nsubstitute input output (cleavir-ir:inputs using-instruction))
  -		 (setf (car (cleavir-ir:using-instructions input)) using-instruction)
  +		      (using-instructions (cleavir-ir:using-instructions output)))
  +		 (loop for using-instruction in using-instructions
  +		       do (nsubstitute input output (cleavir-ir:inputs using-instruction)))
  +		 (setf (cleavir-ir:using-instructions input) using-instructions)
   		 (cleavir-ir:delete-instruction instruction)))
   	     superfluous-instructions)
       (cleavir-ir:set-predecessors initial-instruction)
  
positive.code: (cl:in-package #:cleavir-hir-transformations)
  
  (defun eliminate-superfluous-temporaries (initial-instruction)
    ;; Make sure we are working with an up-to-date graph, both with
  
negative.code: 			     (gethash (car (cleavir-ir:defining-instructions input)) owners))
  			 (not (gethash input superfluous-locations))
  			 (typep output 'cleavir-ir:lexical-location)
  			 (= (length (cleavir-ir:defining-instructions output)) 1)
  			 (eq (gethash instruction owners)
  			     (gethash (car (cleavir-ir:using-instructions output)) owners))
  			 (not (gethash output essential-locations)))))
  