Currently we only call replaceLoopPHINodesWithPreheaderValues() if optimizeLoopExits() replaces the exit with an unconditional exit. However, it is very common that this already happens as part of eliminateIVComparison(), in which case we're leaving behind the dead header phi.
Tweak the early bailout for already-constant exits to also call replaceLoopPHINodesWithPreheaderValues().