X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Fir1util.lisp;h=33a8d3d872505427b8abcb7e10b9cf9f65f5f020;hb=f7faed97898dd0e94a18b0d1fca03aaa0fe24ab0;hp=e3ef6cfef7db4c28ac0f245eb1494c60c785d8c2;hpb=edb7acf8d242c0398ec33924e21c85dc54bc768d;p=sbcl.git diff --git a/src/compiler/ir1util.lisp b/src/compiler/ir1util.lisp index e3ef6cf..33a8d3d 100644 --- a/src/compiler/ir1util.lisp +++ b/src/compiler/ir1util.lisp @@ -149,6 +149,16 @@ (t (eq (block-start (first (block-succ (node-block node)))) (node-prev dest)))))) +;;; Returns the defined (usually untrusted) type of the combination, +;;; or NIL if we couldn't figure it out. +(defun combination-defined-type (combination) + (let ((use (principal-lvar-use (basic-combination-fun combination)))) + (or (when (ref-p use) + (let ((type (leaf-defined-type (ref-leaf use)))) + (when (fun-type-p type) + (fun-type-returns type)))) + *wild-type*))) + ;;; Return true if LVAR destination is executed after node with only ;;; uninteresting nodes intervening. ;;; @@ -588,7 +598,6 @@ dx arg recheck-component))) (ref (let* ((other (trivial-lambda-var-ref-lvar use))) - (print (list :ref use other)) (unless (eq other lvar) (handle-nested-dynamic-extent-lvars dx other recheck-component)))))))