> But the compiler does not know that fstrcmp is called millions of time and
> that this piece of code needs to be optimized for speed rather than for space.

If doing profile-directed optimization, it does know.  In this case, it
will even inline five or six recursive calls, as in

  if (n >= 2)
    {
      n1 = n - 1;
      if (n1 >= 2)
        {
          n2 = n1 - 1;
          nn1 = n * n1;
          if (n2 >= 2)
            return nn1 * n2 * fact (n2 - 1);
          else
            return nn1;
        }
      else
        return n;
     }
   else
     return 1;

(which is not the case of fstrcmp, but just to leet you know).

> Does GCC meanwhile have a heuristic that forces inlining of a 'static'
> function that is only used once in the compilation unit?

Yes, though I think it is limited by the growth in stack usage.

Paolo


Reply via email to