2013-09-05 14 views
6

Mi piacerebbe sapere quanto segue sul progetto Compiler-RT di LLVM: da quale programma viene richiamato. A mio parere, Compiler-RT è una raccolta di funzioni che gestiscono le istruzioni in LLVM che non hanno realmente controparti hardware (c'è altro oltre a questo?). Quindi, se utilizzo la divisione in LLVM, dovrebbe essere sostituita da una funzione Compiler-RT appropriata. Primo, se questo non è corretto, per favore correggimi!Per cosa e da dove viene richiamato Compiler-RT?

In secondo luogo, sono curioso di sapere chi genera l'utilizzo di Compiler-RT. È Clang o è direttamente LLVM. Potrei scrivere un front-end diverso su LLVM e LLVM gestirà automaticamente l'uso di Compiler-RT quando appropriato?

risposta

5

Entrambe le vostre affermazioni sono corrette. Un back-end LLVM deve mappare LLVM IR alle istruzioni native specifiche del target. Se un'istruzione non è supportata in modo nativo, deve essere sostituita (legalizzata). È possibile vedere ciò che si sta verificando in TargetLowering, che si associa direttamente alle funzioni di runtime nello Compiler RT.

Il front-end non è coinvolto.