39.80 Mhz, 25 nanosec clock
a++; a++; a++; ...The variable is declared as a register integer and it is hoped that the compiler, without optimization since optimizing would remove the whole loop, will turn that directly into one instruction.
This is not always the case. If you think that your mhz output is wrong,
check the compiler output by compiling like so
cc -S mhz.c and
then examining mhz.s. It should have a bunch of identical instructions
at the bottom of the file. All of the instructions should be
adds or shifts of the same registers, over and over.
If it is loading,
adding, storing, then it failed to put the variable in a register.
It probably put the variable on the stack.
Try gcc if this happens.