When the "Show Compiler-Generated Code" option is set to true, things such as the "foreach" statement when decompiled should translate to methods such as Current, MoveNext, Reset, Dispose etc and not show the "foreach" statement.
Also, when using nullable types such as when declaring a Int32? variable, the decompiled code should show Nullable<Int32> and not Int32?.
These are just two problems I found but I have a feeling there are many more.
It was my impression that the whole point of the "Show Compiler-Generated Code" option was to show what the compiler was doing (primarily for learning and exploring purposes). If the decompliation is optimizing the code by showing syntactic sugar when that flag is set then it defeats the whole purpose.