On 11 October 2013 07:05, Douglas Katzman <dougk@google.com> 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 code coverage.

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.

--
Juho Snellman