The real question is: Does GCC care about being competitive in terms of
performance? If intellectual freedom is the only goal, then we can by
all means approach this from a generic perspective. If we want a
compiler than is a practical alternative to commercial products, we need
to concern ourselves with performance issues.
The generic approach does not preclude OpenMP performance. I think if
you would examine the commercial implementations, they go for a
generic approach. They hide the details of using LWP (lightweight
processes), SPROCS, threads, or whatever threading model in the
support routines.