diff --git a/src/cmp/cmpct.lsp b/src/cmp/cmpct.lsp index 5adb949a4..d5c65d5af 100644 --- a/src/cmp/cmpct.lsp +++ b/src/cmp/cmpct.lsp @@ -32,21 +32,27 @@ (make-c1form* 'LOCATION :type 'CHARACTER :args (list 'CHARACTER-VALUE (char-code val)))) ((typep val 'DOUBLE-FLOAT) + (when (and (ext:float-nan-p val) (not only-small-values)) + (cmperr "Cannot externalize value ~A" val)) (make-c1form* 'LOCATION :type 'DOUBLE-FLOAT :args (list 'DOUBLE-FLOAT-VALUE val (add-object val)))) ((typep val 'SINGLE-FLOAT) + (when (and (ext:float-nan-p val) (not only-small-values)) + (cmperr "Cannot externalize value ~A" val)) (make-c1form* 'LOCATION :type 'SINGLE-FLOAT :args (list 'SINGLE-FLOAT-VALUE val (add-object val)))) ((typep val 'LONG-FLOAT) + (when (and (ext:float-nan-p val) (not only-small-values)) + (cmperr "Cannot externalize value ~A" val)) (make-c1form* 'LOCATION :type 'LONG-FLOAT :args (list 'LONG-FLOAT-VALUE val (add-object val)))) #+sse2 ((typep val 'EXT:SSE-PACK) (c1constant-value/sse val)) + (only-small-values nil) (always (make-c1form* 'LOCATION :type (object-type val) :args (add-object val))) - (only-small-values nil) (t nil))) #+sse2