¿Por qué dos binarios de programas con solo comentarios cambiados no coinciden exactamente en gcc?

Creé dos programas C Programa 1 int main() { } Programa 2 int main() { //Some Harmless comments } AFAIK, al compilar, el compilador (gcc) debe ignorar los comentarios y los espacios en blanco redundantes y, por lo tanto, la salida debe ser similar. Pero cuando verifiqué las sumas md5 de...