"GET-VECTOR-SUBTYPE"
"GET-TOPLEVELISH-FILE-INFO"
"HALT"
- "IF-EQ" "INLINE-SYNTACTIC-CLOSURE-LAMBDA"
+ "IF-EQ"
+ "IMMEDIATE-TN-P"
+ "INLINE-SYNTACTIC-CLOSURE-LAMBDA"
"INSERT-STEP-CONDITIONS"
"IR2-COMPONENT-CONSTANTS" "IR2-CONVERT"
"IR2-PHYSENV-NUMBER-STACK-P"
(aver (eq (tn-kind tn) :constant))
(constant-value (tn-leaf tn)))
+(defun immediate-tn-p (tn)
+ (declare (type tn tn))
+ (let ((leaf (tn-leaf tn)))
+ ;; Leaves with KIND :CONSTANT can have NIL as the leaf if they
+ ;; represent load time values.
+ (and leaf
+ (eq (tn-kind tn) :constant)
+ (eq (immediate-constant-sc (constant-value leaf))
+ (sc-number-or-lose 'sb!vm::immediate)))))
+
;;; Force TN to be allocated in a SC that doesn't need to be saved: an
;;; unbounded non-save-p SC. We don't actually make it a real "restricted" TN,
;;; but since we change the SC to an unbounded one, we should always succeed in
(let ((scn (sc-number-or-lose representation)))
(labels ((make-tn ()
(make-representation-tn ptype scn))
- (immediate-tn-p (tn)
- (and (eq (sb!c::tn-kind tn) :constant)
- (eq (sb!c::immediate-constant-sc (tn-value tn))
- (sc-number-or-lose 'immediate))))
(frob-tn (tn)
(if (immediate-tn-p tn)
tn
(let ((scn (sc-number-or-lose representation)))
(labels ((make-tn ()
(make-representation-tn ptype scn))
- (immediate-tn-p (tn)
- (and (eq (sb!c::tn-kind tn) :constant)
- (eq (sb!c::immediate-constant-sc (tn-value tn))
- (sc-number-or-lose 'immediate))))
(frob-tn (tn)
(if (immediate-tn-p tn)
tn
t)
t)))
+(with-test (:name :regression-1.0.24.37)
+ (compile nil '(lambda (&key (test (constantly t)))
+ (when (funcall test)
+ :quux))))
+
;;; Attempt to test a decent cross section of conditions
;;; and values types to move conditionally.
(macrolet
;;; checkins which aren't released. (And occasionally for internal
;;; versions, especially for internal versions off the main CVS
;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".)
-"1.0.24.39"
+"1.0.24.40"