Clang-Optimierungsregression: Inline-Funktionen verschlechtern die Leistung in einem C++-Benchmark

2025-02-19

Ein C++-Benchmark zeigte eine Leistungsregression bei der Optimierung von Inline-Funktionen in Clang. Wenn die Funktion `increment` inline war, führten Fehlvorhersagen von Verzweigungen zu einer etwa 5-fachen Verlangsamung im Vergleich zur nicht inline-Version. `perf stat` bestätigte, dass falsche Verzweigungsvorhersagen die Ursache waren. Interessanterweise verbesserte die Kompilierung mit der Zig-Toolchain die Leistung deutlich, was auf eine mögliche Regression in Clang 19 hindeutet. Das Problem wurde im Clang/LLVM-Repository gemeldet, wobei die erste Untersuchung auf einen Kompromiss zwischen den Optimierungspassagen SROA und SimplifyCFG hinweist.

Entwicklung