Messages in this thread | | | From | Segher Boessenkool <> | Subject | Re: -Os versus -O2 | Date | Mon, 25 Jun 2007 09:35:33 +0200 |
| |
>> Also note that whether or not it is profitable to unroll >> a particular loop depends largely on how "hot" that loop >> is, and GCC doesn't know much about that if you don't feed >> it profiling information (it can guess a bit, sure, but it >> can guess wrong too). > > actually, what you are saying is that the compiler can't know enough > to figure out how to optimize for speed. it will just do what you tell > it to, either unroll loops or not.
It bases its optimisation decisions on the options you give it, the profile feedback information you either or not gave it, and a whole bunch of heuristics.
> this argues that both O2 and Os are incorrect for a project to use and > instead the project needs to make it's own decisions on this.
For optimal performance, you need to fine-tune options yes, per file (or per function even!)
> if this is the true feeling of the gcc team I'm very disappointed, it > feels like a huge step backwards.
I speak only for myself. However this is the only way it _can_ be, the compiler isn't clairvoyant. Some of the heuristics sure could use some tuning, but they stay heuristics.
Segher
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |