On 11 October 2013 07:05, Douglas Katzman <dougk@...> wrote:
> I imagine this must have had something to do with trying to get good
> coverage by _not_ statically eliding code. In other words, I think the
> intent was to explicitly show paths as 'not taken' by having all paths
> exist. But this is sort of a more general problem and I don't understand
> why TYPEP was singled out. Any ideas?
Unfortunately I don't remember the reason at all.
I don't think it would've been about suppressing dead code elimination
though. Trying to do that by disabling a single source transform would've
indeed seem like an insane way of going about things. Also, if you compile
that code on a 1.0.6-era SBCL, you don't get the warning and you do get the
code deletion note.
Could be interesting to bisect this to the exact change that broke this
example, but I'd bet it's some compiler improvement completely unrelated to
The best guess I have of the motive behind those changes is accuracy of
source locations. Source transforms are very annoying that way. But the
exceptionalism of TYPEP could still not be explained, disabling all source
transforms seems like a much more reasonable thing.
A secondary guess is that the goal was to suppress something annoying about
the typep expansion itself. That's also pretty weak.
So yeah, sorry. Should've documented the thinking at the time. But right
now deleting that check seems like a totally reasonable change.