Breaking a single expression into two expressions with an intermediate local variable causes the optimized code to be significantly slower (40% or more). Correspondingly, additional assembly code instructions are generated. The problem occurs whether compiling to x64 or x86.
While this isn't a code correctness issue, I submitted this is a bug (not a suggestion) because this is a fundamental optimization. I could see the frustration in trying to profile a complex algorithm that had problems like this scattered throughout its routines. You'd work through the hotspots but have no hint of the broader warm region that could be vastly improved by hand tweaking what we normally take for granted from the compiler.
A related question on stackoverflow is here: