2012-12-06 141 views
5

我已經編寫了一個修改中間表示(IR)代碼的LLVM過程。爲了增加可移植性,我還希望它可以使用gcc編譯器。所以我想知道是否有任何工具可以將gcc的一些中間表示(IR)轉換爲LLVM IR。將GCC IR轉換爲LLVM IR

+0

+1用於補償LLVM API可能造成的痛苦。 – 2012-12-06 17:07:49

回答

5

您可能想要dragonegg(它使用GCC前端構建LLVM IR)。

如果你想在GCC內部表示工作,MELT(高級別領域特定語言擴展GCC)可能是正確的工具。

+0

感謝您的建議。但是,還有一種方法可以將GCC IR轉換爲LLVM IR,然後再轉換成GCC IR?這樣我就不必修改前端或後端。 – pythonic

+0

我不確定LLVM IR和GCC IR是同構的(我確信它們不是 - 邪惡總是在細節中)。但是,你想要達到什麼目的?你爲什麼要問?爲什麼在GCC和LLVM IR之間來回關注? –

+0

那麼我想要實現的是將GCC IR轉換爲LLVM IR,應用我的pass,它修改IR,然後將生成的LLVM IR轉換回GCC IR,以便gcc後端可以從那裏恢復。因爲我正在使用gcc作爲其編譯器的平臺上工作,所以它不可能有LLVM。 – pythonic

2

它可能會是很多更容易簡單地編寫與gcc IR一起工作的代碼的另一個版本。你想做什麼可能是不可能的,如果可能的話,這可能是非常困難的。 (比編寫LLVM通行證更爲重要。)

+1

我絕對同意。從GCC IR到LLVM IR來回工作是無意義的! (如果你這樣做了,那將是一場噩夢)。 –