* Add a transform to ensure any constant argument to LOGTEST is in
second position.
* Commutative-arg-swap used to often cause suboptimal code: subsequent
transforms fire before constraint propagation has tightened types
back to their original value. Hack with TRULY-THE for now. A more
general fix (e.g. by declaring the type of arguments in spliced-in
lambda expressions) would be even better.
(if (and (constant-lvar-p x)
(not (constant-lvar-p y)))
`(,(lvar-fun-name (basic-combination-fun node))
- y
+ (truly-the ,(lvar-type y) y)
,(lvar-value x))
(give-up-ir1-transform)))
-(dolist (x '(= char= + * logior logand logxor))
+(dolist (x '(= char= + * logior logand logxor logtest))
(%deftransform x '(function * *) #'commutative-arg-swap
"place constant arg last"))