From: Alastair B. <lis...@us...> - 2015-03-01 21:20:27
|
The branch "master" has been updated in SBCL: via c07f580a19596c3b81561e684ccfb252f7923964 (commit) from e7e408b744e321f69093b73a419cace79a076628 (commit) - Log ----------------------------------------------------------------- commit c07f580a19596c3b81561e684ccfb252f7923964 Author: Alastair Bridgewater <ala...@gm...> Date: Sun Mar 1 10:37:16 2015 -0500 compiler/stack: Bug 308914 workaround should never trigger. * This "workaround" is for a dead-code case where STACK analysis is confused by some loop of dead-but-not-deleted blocks remaining in the component. In actual practice, it mostly drives the bugs involved to become subtler, causing errors and infinite loops slightly later in STACK analysis. * The new DCE pass should prevent this case from recuring, so killing the workaround should do no harm, though making it into an AVER rather than merely reverting to an infinite loop is an improvement. --- src/compiler/stack.lisp | 12 +++++++----- 1 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/compiler/stack.lisp b/src/compiler/stack.lisp index 410bd1a..932fcde 100644 --- a/src/compiler/stack.lisp +++ b/src/compiler/stack.lisp @@ -322,11 +322,13 @@ (setf (block-flag block) t) (incf todo))))) do (when (= last-todo todo) - ;; If the todo count is the same as on last iteration, it means - ;; we are stuck, which in turn means the unmarked blocks are - ;; actually unreachable, so UVL set ordering for them doesn't - ;; matter. - (return-from order-uvl-sets)) + ;; If the todo count is the same as on last iteration and + ;; there are still blocks to do, it means we are stuck, + ;; which in turn means the unmarked blocks are actually + ;; unreachable and should have been eliminated by DCE, + ;; and will very likely cause problems with later parts + ;; of STACK analysis, so abort now if we're in trouble. + (aver (not (plusp todo)))) while (plusp todo))) ;;; This is called when we discover that the stack-top unknown-values ----------------------------------------------------------------------- hooks/post-receive -- SBCL |