Ich frage mich, warum LLVM den folgenden IR-Code nicht optimiert (indem er den PassManagerBuilder mit der auf '3' eingestellten Optimierung verwendet und auch das 'opt' Tool von LLVM verwendet):
%Vor%Der erwartete Code ist:
%Vor%Gibt es einfach keine Optimierungen, um diesen Fall zu bearbeiten? Oder bin ich nicht in der Lage zu produzieren (dieser Code wird von einem Front-End entwickelt, das ich entwickle) die richtige IR, die Optimierung ermöglichen würde?
Bevor es vorgeschlagen wird, kann ich keinen Code erzeugen, der als Wert zurückgibt, da diese Funktionen von anderen Modulen / Bibliotheken aufgerufen werden können, die die Größe oder den Inhalt von 'GenericStruct' nicht kennen (und sie würden 'TestClass' lokal deklarieren) als 'Struktur undurchsichtig').
Wenn Sie glauben, dass die Optimierung stattfinden sollte, melden Sie einen Fehler in LLVM Bug Tracker . LLVM-Entwickler sind normalerweise sehr glücklich und interessiert, wenn sie über verfehlte Optimierungsmöglichkeiten berichten.
Tags und Links optimization llvm return-value