It certainly makes things more complex for the compiler. However, I don't know an example where it would prevent an optimization.
* Put an object in an invalid state
* Perform some operation that might unwind
* Fix the object again
If you unwind while the object is in an invalid state, and its destructor is called during unwinding, you can end up with undefined behavior.