X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Ftypetran.lisp;h=168d354920a2ae4e9207affdb149c392a6b0970c;hb=05525d3a5906d7a89fcb689c26177732493c40ce;hp=e1983791e4b269399efbd3505756eeaea9be1938;hpb=bd0ba0f214518e8d72ff2d44de5a1e3e4b02af2c;p=sbcl.git diff --git a/src/compiler/typetran.lisp b/src/compiler/typetran.lisp index e198379..168d354 100644 --- a/src/compiler/typetran.lisp +++ b/src/compiler/typetran.lisp @@ -163,12 +163,12 @@ (declare (optimize (safety 0))) (and ,@(when low (if (consp low) - `((> (the ,base ,n-object) ,(car low))) - `((>= (the ,base ,n-object) ,low)))) + `((> (truly-the ,base ,n-object) ,(car low))) + `((>= (truly-the ,base ,n-object) ,low)))) ,@(when high (if (consp high) - `((< (the ,base ,n-object) ,(car high))) - `((<= (the ,base ,n-object) ,high)))))))) + `((< (truly-the ,base ,n-object) ,(car high))) + `((<= (truly-the ,base ,n-object) ,high)))))))) ;;; Do source transformation of a test of a known numeric type. We can ;;; assume that the type doesn't have a corresponding predicate, since @@ -200,8 +200,8 @@ ,(transform-numeric-bound-test n-object type base))) (:complex `(and (complexp ,n-object) - ,(once-only ((n-real `(realpart (the complex ,n-object))) - (n-imag `(imagpart (the complex ,n-object)))) + ,(once-only ((n-real `(realpart (truly-the complex ,n-object))) + (n-imag `(imagpart (truly-the complex ,n-object)))) `(progn ,n-imag ; ignorable (and (typep ,n-real ',base)