The gcc manual defines the options mcpu, mtune, and march as being optimizers for various ARM targets. It lists viable options, and they are all ARM related. However, I often see people using options that aren't in the manual for targets that the manual says aren't supported. For instance, -mcpu=i686, or -march=native. What is the nature of this discrepancy between the documentation and what I see as common usage?