No, lo que ocurre es que el compilador sí que está trabajando perfectamente, y en este caso son las optimizaciones lo que hacía que no vieras el valor de la variable cantidad, ¿por qué?, pues simplemente porque después de esa línea no había nada que se hiciera con esa variable, entonces el compilador decide que no sirve de nada asignarle ningún valor.
Por eso, tras poner la línea que te he indicado, la del showmessage, el compilador decide darle el valor a la variable porque ahora sí tiene algo que hacer con ella, tiene que presentar su valor.
Por lo que no te preocupes, el compilador funciona perfecto