2012-12-06 16 views
5

Ho scritto un pass LLVM che modifica il codice di rappresentazione intermedia (IR). Per aumentare la portabilità, voglio anche che funzioni con un compilatore gcc. Quindi mi chiedevo se ci sia uno strumento in grado di convertire alcuni Intermediate Representation (IR) di gcc in LLVM IR.Conversione da GCC IR a LLVM IR

+0

+1 per compensare il dolore che l'API LLVM potrebbe aver causato. –

risposta

5

Probabilmente si desidera dragonegg (che utilizza il front-end GCC per creare un IR LLVM).

E se si voleva lavorare sulle rappresentazioni interne GCC, lo MELT (un linguaggio di dominio di alto livello per estendere GCC) è probabilmente lo strumento giusto.

+0

Grazie per il tuo suggerimento. Ma c'è anche un modo per convertire GCC IR in LLVM IR e poi di nuovo in GCC IR? In modo che non debba modificare uno dei front o backend. – pythonic

+0

Non sono sicuro che LLVM IR e GCC IR siano isomorfi (e sono sicuro che non lo siano: il male è sempre nei dettagli). Ma cosa vuoi esattamente raggiungere, e perché lo chiedi? Perché la preoccupazione di andare avanti e indietro tra GCC e LLVM IR ??? –

+0

Bene, quello che voglio ottenere è tradurre GCC IR in LLVM IR, applicare il mio passaggio, che modifica l'IR e quindi tradurre l'IR LLVM risultante nel GCC IR, in modo che il backend gcc possa riprendere da lì. Perché sto lavorando su una piattaforma che ha gcc come compilatore, quindi non è possibile avere LLVM lì. – pythonic

2

Probabilmente sarà molto più semplice scrivere semplicemente un'altra versione del codice che funziona con gcc IR. Quello che vuoi fare è probabilmente impossibile, e se è possibile, è probabilmente estremamente difficile. (Più che scrivere il pass LLVM in primo luogo.)

+1

Sono assolutamente d'accordo. Lavorare avanti e indietro da GCC IR a LLVM IR è privo di senso! (e se lo facessi sarebbe un incubo). –

Problemi correlati