> Thanks for the comments. FDO will probably improve SPEC2000 score. > Although it is not obvious for some tests because the train data sets > for them are different from the reference data sets and it might > actually mislead the compiler.
There are several studies on the topic and it is not that bad in practice. In wast majority of cases even pretty bad training runs gets significant portion of improvement you can get from training on the final benchmark data. In SPEC case FDO improves pretty much all benchmarks. I think the FDO is relatively little used because it is relatively hard to use (i.e. user has to modify makefiles and learn how the feature works) and also because there is very little support for it (i.e. in automake and such) > As for vortex FDO improvement, vortex contains a moderate size loop in > which most of time is spent. The loop has if-then-else on the top loop > level. On all SPEC2000 data sets, one if-branch is taken practically > always (like 1 to 1,000,000). So it is not amazing for me that FDO > gives such improvement for vortex. It would be interesting to know if same improvement happens with LTO and if not what LIPO does. I will unbreak vortex on our tester. Honza