2012-12-06 140 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来回工作是无意义的! (如果你这样做了,那将是一场噩梦)。 –