Compilador MS C # e código não otimizado

Nota: notei alguns erros no meu exemplo publicado - edição para corrigi-lo

O compilador C # oficial faz algumas coisas interessantes se você não ativar a otimização.

Por exemplo, uma declaração if simples:

int x;
// ... //
if (x == 10)
   // do something

se torna algo como o seguinte se otimizado:

ldloc.0
ldc.i4.s 10
ceq
bne.un.s do_not_do_something
// do something
do_not_do_something:

mas se desativarmos a otimização, ela se tornará algo assim:

ldloc.0
ldc.i4.s 10
ceq
ldc.i4.0
ceq
stloc.1
ldloc.1
brtrue.s do_not_do_something
// do something
do_not_do_something:

Eu não consigo entender direito isso. Por que todo esse código extra, que aparentemente não está presente na fonte? Em C #, isso seria o equivalente a:

int x, y;
// ... //
y = x == 10;
if (y != 0)
   // do something

Alguém sabe por que faz isso?

questionAnswers(3)

yourAnswerToTheQuestion