diff --git a/src/compiler/ir1opt.lisp b/src/compiler/ir1opt.lisp index 286b98f9e..4a93d91b6 100644 --- a/src/compiler/ir1opt.lisp +++ b/src/compiler/ir1opt.lisp @@ -1491,9 +1491,6 @@ (not (node-lvar node))) (return-from ir1-optimize-combination (flush-node node))) ((fold-call-derived-to-constant node) - (return-from ir1-optimize-combination)) - ((and (combination-is node *elidable-memory-loads*) - (try-reuse-expr-value node)) (return-from ir1-optimize-combination))) (when (and (ir1-attributep (fun-info-attributes info) commutative) (= (length args) 2) diff --git a/tests/lcse.impure.lisp b/tests/lcse.impure.lisp index 8261b0f03..537fb535b 100644 --- a/tests/lcse.impure.lisp +++ b/tests/lcse.impure.lisp @@ -1,9 +1,10 @@ +(invoke-restart 'run-tests::skip-file) (setq *evaluator-mode* :compile) (defstruct s (x (make-array 3))) -;; Don't creash evaluating this. +;; Don't crash evaluating this. ;; The bug was that local common subexpression elimintation tried to add ;; a REUSE-VAR binding into the LET which bound * instead of just giving up. (let (*) diff --git a/tests/lcse.pure.lisp b/tests/lcse.pure.lisp index 1bae6e35f..f5fc6de72 100644 --- a/tests/lcse.pure.lisp +++ b/tests/lcse.pure.lisp @@ -11,6 +11,7 @@ ;;;; Tests of local common subexpression elimination +(invoke-restart 'run-tests::skip-file) (import '(ctu:inspect-ir sb-c::combination-fun-debug-name sb-c::basic-combination-p))