From: Douglas K. <do...@go...> - 2014-02-02 23:19:09
|
I've asked something like this before, but how would people feel about a warning-suppression wrapper added to IN-HOST-COMPILATION-MODE for other Lisp hosts? (Diff for CCL below, generalizable of course) Re this specific error: On one hand, seeing it exposes places where there might be assumptions about type discrimination; on the other hand, I dislike having to remember to type in this wrapper each time I want to verify that some change has not wired in assumptions about SBCL being built only in SBCL. And then I try CCL and it breaks independent of my change. In particular, other Lisps might not have (complex single-float) and (complex double-float), and we depend on that in (at least) CANONICALIZE-INLINE-CONSTANT. As well we use an idiom of (TYPECASE (#-sb-xc-host some-type #+sb-xc-host nil (f)) has unreachable clauses, which is a fatal error in CCL. A build-time-only shadow of TYPECASE could remove those clauses I suppose. Additionally, recent CCL (or maybe older, I don't know) prints about N-thousand lines of "lexical variable ignored" when compiling x86-64/insts because if the only reference to a lexical var is from a local function that it itself never called, the variable is considered unused. Take a look for example at MAKE-PRINTER-DEFUN which binds a dozen (give or take) FLETs, and consider an instruction such as CLC on x86 which doesn't need any state whatsoever to print. Hence, all the variables are deemed ignored. The generates about N thousand lines of nonfatal warnings which I had to read through to remember the problem with inline constants. (with-additional-nickname ("SB-XC" "SB!XC") - (funcall fn)))) + (handler-bind + (#+ccl + (ccl:compiler-warning + (lambda (c) + (when (typep (car (slot-value c 'ccl::args)) + 'ccl::shadowed-typecase-clause) + (muffle-warning))))) + (funcall fn))))) |