From: Paul F. Dietz Date: Thu, 14 Jul 2005 11:49:50 +0000 (+0000) Subject: Add bug 384, involving performance problem in the compiler on X-Git-Url: http://repo.macrolet.net/gitweb/?a=commitdiff_plain;h=70f19dcc6c7b44464632300d519b51c32f9e9a32;p=sbcl.git Add bug 384, involving performance problem in the compiler on types that normalize to very large MEMBER types on characters. --- diff --git a/BUGS b/BUGS index 42b6a8e..b53bde0 100644 --- a/BUGS +++ b/BUGS @@ -2096,3 +2096,18 @@ WORKAROUND: instruction. Either the VOP should be fixed or the compiler should be taught how to transform this case away, paying particular attention to side-effects that might occur in the arguments to ASH. + +384: Compiler runaway on very large character types + + (compile nil '(lambda (x) + (declare (type (member #\a 1) x)) + (the (member 1 nil) x))) + + The types apparently normalize into a very large type, and the compiler + gets lost in REMOVE-DUPLICATES. Perhaps the latter should use + a better algorithm (one based on hash tables, say) on very long lists + when :TEST has its default value? + + A simpler example: + + (compile nil '(lambda (x) (the (not (eql #\a)) x)))