Fragen? Antworten! Siehe auch: Alternativlos
GCC now uses a more aggressive analysis to derive an upper bound for the number of iterations of loops using constraints imposed by language standards. This may cause non-conforming programs to no longer work as expected, such as SPEC CPU 2006 464.h264ref and 416.gamess.
gcc 4.8 erzeugt falschen Code bei den SPEC Benchmarks. Die SPEC Benchmarks. DIE SPEC-BENCHMARKS!! Compilerhersteller kriegen seit Jahren von der Presse aufs Maul, wenn sie Spezialoptimierungen für die SPEC-Benchmarks einbauen, weil man das u.a. benutzt, um die Performance von Optimierern in Compilern zu messen. Und was macht gcc? Scheiß drauf, wir machen das mal kaputt. Ist ja nur die SPEC-Suite!1!!Die besteht im Übrigen aus lauter Programmen aus der echten Welt, das sind keine synthetischen Benchmarks. Die Programme, die gcc da zerschießt, sind auch ganz apart. h264ref kommt, wie der Name schon sagt, aus der H.264 Referenz-Implementation. GAMESS ist eine Software der Ames Labs (US-Regierungsinstitution) für Simulation von "Quantum Chemistry". Alle Teile in Spec sind Programme dieses Kalibers. In ihrem Fach sowas wie die Referenz für Code aus diesem Fachbereich. Und das wagen diese gcc-Sprallos kaputtzumachen. Und wofür?
Ein enormer Aufwand, der da getrieben wird. Lustigerweise hab ich kürzlich einen Bug gegen gcc gefiled, wo mir dann gesagt wird, dass sich diese Optimierung nicht lohnen würde. Ach aber SPEC kaputtmachen lohnt sich?
Inzwischen hat übrigens clang/LLVM soweit aufgeholt, dass sie auch Vektorisierung können. gcc ist daher aus meiner Sicht angezählt. Schade für das GNU-Projekt.