What that means, is this: computer processors are full of bugs, like everything else to do with computers, and therefore if you do certain things in just the right way, they don't work properly. The compiler has to work around these situations by Not Doing That, Ever. Our approach is to ignore them until the very end of code generation, in the hope that the code we'll generate will be doing something different anyway, because usually, that's the case. On the occasions where the conditions do arise, we have to something break the conditions, which usually results in making the code go slower.
We've accumulated a lot of cruft in our old compiler to do all of this kind of stuff, and it all needed to be re-written for the new compiler -- so I took the opportunity to completely design the mechanism, making it considerably more declarative, automated, and so on. Then I had to re-design it all again, when I first explained it to other people, and they said, "Yeah, that's great. How do you deal with this case?"
The first crack took the best part of six months to do, purely because many other things got in the way, and I'd only get a chance to work on it for about two-three hours each week. The redesign took a good few weeks of thinking, but I've managed to get a quiet period where most of it's all been written in a few days, and it's working a lot better now. This means I'll get into work tomorrow morning, and discover that all the regression tests have failed, but that's tomorrow's problem.
So that's been quite rewarding. Therefore, to balance it, my neck's been horribly stiff for the past few days, and I've had a lot of spikes from the neck/shoulder muscles today, where the muscles have said, no, I'm not going to move in that way, thanks very much. So, ow.