The best documentation you will find is the code of the new compiler platform 'Roslyn' you can follow the compiler flag from CompilationOptions.cs
public bool Optimize { get; protected set; }
If you click on the property you will see all references in the code.
One of the main consequences of this flag seem to be that Optimizer.Optimize is called and try to optimize the code, especially to reduce pushing things on the stack as much as possible.
var a = Foo();
var b = Bar();
Baz(a, b);
Can be written as (pseudo-IL):
Declare Locals a, b
Call Foo
a := pop stack
Call Bar
b := pop stack
push a
push b
Call Baz
But that's totally possible to optimize it to remove locals:
Call Foo
Call Bar
Call Baz
(There are obviously more complex cases)