In einem ähnlichen Schritt wie bei der GCC-Implementierung erhielt LLVM Git diese Woche erste Unterstützung für fette LTO-Objekte. Diese „-ffat-lto-objects“-Unterstützung wird mit der LLVM/Clang 17-Version im Herbst verfügbar sein.
Durch die Aktivierung der Fat-LTO-Objektunterstützung des Compilers kann die Compiler-IR zusammen mit dem endgültigen Objektcode gespeichert werden. Dadurch können diese „fetten“ Objekte sowohl für Entwicklungs-Builds als auch für die Produktion optimierter Builds verwendet werden, allerdings auf Kosten einer größeren Objektgröße und längeren Build-Zeiten. In der Link-Time-Phase wird dann entschieden, ob die LTO-Informationen (Link-Time Optimization) verworfen oder verwendet werden sollen.
GCC unterstützt Fat-LTO-Objekte schon seit einiger Zeit, aber diese Woche hat LLVM Git endlich Unterstützung für Fat-LTO-Objekte erhalten, mit einer Implementierung, die der der GNU Compiler Collection ähnelt. Der Commit, der die vorläufige Fat-LTO-Unterstützung hinzufügt, erklärt:
“Fat-LTO-Objekte enthalten beides LTO-kompatibles IR sowie generierter Objektcode. Dadurch können Benutzer die Entscheidung, ob LTO verwendet werden soll oder nicht, auf die Linkzeit verschieben. Dies ist eine Funktion, die seit einiger Zeit in GCC verfügbar ist und das vorhandene-ffat-lto-Objekte werden auf die gleiche Weise als funktionsfähig gekennzeichnet wie GCCs.