2012-07-31 6 views
6

Ich kompiliere Code mit clang mit -O4-Optimierung. Ich möchte jedoch das Inlining von Funktionen deaktivieren. Ich habe meinen eigenen LLVM-Pass, der Code in den generierten Code injiziert. Nach meinem Pass möchte ich das Inlining von Funktionen ermöglichen. Wie kann ich das machen.So deaktivieren Sie eine Optimierung in LLVM

+0

Können Sie nicht einfach sicherstellen, dass Ihr Pass zu den ersten Optimierungspässen gehört? I.e. stellen Sie sicher, dass es * vor * der Funktion Inliner ausgeführt wird? – Giel

+0

Wie kann ich das Giel machen? – pythonic

Antwort

6

Sie können opt verwenden, die says es kann läuft in beliebiger Reihenfolge.

clang -c main.cpp -O0 -emit-llvm | opt -load yourplugin -yourpass -inline 
4

Wenn Sie Klirren hacken, können Sie übergibt, um in clang/lib/CodeGen/BackendUtil.cpp Datei ändern. Sie sollten Ihren Pass vor dem Inlining in der Methode CreatePasses() einfügen.