diff --git a/compiler/vmdef.lisp b/compiler/vmdef.lisp index 6554da2e009f9bf37f0b3ecb5f8bc97641467391..514f31f800011c87c75c7c13f674eec6e9afb8a8 100644 --- a/compiler/vmdef.lisp +++ b/compiler/vmdef.lisp @@ -1258,8 +1258,8 @@ ;;; Parse-Temporary -- Internal ;;; -;;; Parse a temporary specification, entering the Operand-Parse structures in -;;; the Parse structure. +;;; Parse a temporary specification, entering the Operand-Parse structures +;;; in the Parse structure. ;;; (defun parse-temporary (spec parse) (declare (list spec) @@ -1267,6 +1267,12 @@ (let ((len (length spec))) (unless (>= len 2) (error "Malformed temporary spec: ~S." spec)) + (unless (listp (second spec)) + (error "Malformed options list: ~S." (second spec))) + (unless (evenp (length (second spec))) + (error "Odd number of arguments in keyword options: ~S." spec)) + (unless (consp (cddr spec)) + (warn "Temporary spec allocates no temps:~% ~S" spec)) (dolist (name (cddr spec)) (unless (symbolp name) (error "Bad temporary name: ~S." name)) @@ -1274,8 +1280,6 @@ :temp-temp (gensym) :born (parse-time-spec :load) :dies (parse-time-spec :save)))) - (unless (evenp (length (second spec))) - (error "Odd number of argument in keyword options: ~S." spec)) (do ((opt (second spec) (cddr opt))) ((null opt)) (case (first opt)