title: What do the -f and -m in gcc/clang compiler options stand for
body: <p><strong>Summary</strong>: What do the <code>-f</code> and <code>-m</code> in <code>gcc</code> and <code>clang</code> compiler options stand for?</p>
  
  <p><strong>Details</strong>:</p>
  
  <p>When using <code>clang</code> I've noticed that many compiler options start with <code>-f</code> and others start with <code>-m</code>.  I assume that there is some historical reason for this and I was curious so I looked at the <code>gcc</code> help and saw the following:</p>
  
  <blockquote>
    <p>Options starting with -g, -f, -m, -O, -W, or --param are automatically
    passed on to the various sub-processes invoked by gcc.  In order to
    pass  other options on to these processes the -W options must
    be used.</p>
  </blockquote>
  
  <p>If I had to guess I think that <code>-f</code> might stand for frontend and <code>-m</code> for machine.  But I'd be interested to hear a more comprehensive answer, possibly including the other sub-processes that gcc invokes.</p>