Exactly. I hope the optimiser does optimise out the read of the variable, but it's not as though one extra read is going to make the damnedest bit of difference anyway.
Which is why I'm amused - it's a code construct that does the right thing, but is slightly less efficient than the obvious one. It's conceivable it's a typo - a harmless one, for once.
Oh, and using bit-wise logic on bools? Well, given the continuing non-existence of &&= and ||=, I suppose there are occasions when you have to, but it gives me a nasty feeling in my mouth.