将GCC IR转换为LLVM IR

8

我写了一个LLVM插件,修改了中间表示(IR)代码。为了增加可移植性,我还希望它能与gcc编译器一起工作。所以我想知道是否有任何工具可以将gcc的某些中间表示(IR)转换为LLVM IR。


+1 用于补偿 LLVM API 可能引起的痛苦。 - user529758
2个回答

6
你可能需要使用Dragonegg,它使用GCC前端构建LLVM IR。
如果你想要在GCC内部表示上工作,那么MELT(一种高级领域特定语言,用于扩展GCC)可能是正确的工具。

感谢您的建议。但是是否有一种方法可以将GCC IR转换为LLVM IR,然后再转换回GCC IR呢?这样我就不必修改前端或后端中的任何一个了。 - pythonic
我不确定LLVM IR和GCC IR是同构的(我相当确定它们不是 - 邪恶总是隐藏在细节中)。但是你到底想要实现什么,为什么要问这个问题?为什么关心在GCC和LLVM IR之间来回切换? - Basile Starynkevitch
我想要实现的是将GCC IR翻译成LLVM IR,应用我的Pass对IR进行修改,然后将生成的LLVM IR再次翻译回GCC IR,以便gcc后端可以从那里继续。因为我正在一个使用gcc作为编译器的平台上工作,所以无法在那里使用LLVM。 - pythonic
3
不要这样做。要么在LLVM IR上工作,要么在GCC IR上工作,但不要两者兼顾。 - Basile Starynkevitch

2

编写另一个版本的代码以与gcc IR协同工作可能会更加容易。你想做的可能不可能,如果可能的话,那就很困难了(比起最初编写LLVM pass来说要更难)。


1
我完全同意。在GCC IR和LLVM IR之间来回工作是没有意义的!(如果你这样做,那将是一场噩梦)。 - Basile Starynkevitch

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接