From 1daa58cfa315fe86634069c941cf54ec8f95623c Mon Sep 17 00:00:00 2001 From: Paul Khuong Date: Fri, 7 Jun 2013 22:27:59 -0400 Subject: [PATCH] Silence the transforms that detect rightward arithmetic shift It seems most of the time, the notes complained about clear left shifts. --- src/compiler/srctran.lisp | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/compiler/srctran.lisp b/src/compiler/srctran.lisp index 7c7f8fd..e13c30e 100644 --- a/src/compiler/srctran.lisp +++ b/src/compiler/srctran.lisp @@ -2771,8 +2771,13 @@ (defun %ash/right (integer amount) (ash integer (- amount))) - (deftransform ash ((integer amount) (sb!vm:signed-word (integer * 0))) + (deftransform ash ((integer amount)) "Convert ASH of signed word to %ASH/RIGHT" + (unless (and (csubtypep (lvar-type integer) ; do that ourselves to avoid + (specifier-type 'sb!vm:signed-word)) ; optimization + (csubtypep (lvar-type amount) ; notes. + (specifier-type '(integer * 0)))) + (give-up-ir1-transform)) (when (constant-lvar-p amount) (give-up-ir1-transform)) (let ((use (lvar-uses amount))) @@ -2789,8 +2794,13 @@ ,(1- sb!vm:n-word-bits) (- amount))))))) - (deftransform ash ((integer amount) (word (integer * 0))) + (deftransform ash ((integer amount)) "Convert ASH of word to %ASH/RIGHT" + (unless (and (csubtypep (lvar-type integer) + (specifier-type 'sb!vm:word)) + (csubtypep (lvar-type amount) + (specifier-type '(integer * 0)))) + (give-up-ir1-transform)) (when (constant-lvar-p amount) (give-up-ir1-transform)) (let ((use (lvar-uses amount))) -- 1.7.10.4