LLVM,CLang和LLC优化通过

时间:2011-03-06 02:25:49

标签: c optimization llvm clang

我正在实施一个新的LLVM后端,从CBackend目标开始。 最终目标是使用“llc”生成输入C代码的源变换。 但是,我想做一些优化,在这种情况下似乎没有得到很好的支持。 LLVM目标代码是非常低级的,我必须检查它以重新发现实际发生的事情。这在AST级别上要简单得多。 但是,似乎AST级别是一个Clang内部构造,并且没有简单的方法来插入它。

我是否必须检查LLVM目标代码并自行反向设计更高级别的流程? (每个后端都必须这样做吗?这看起来很浪费!)

1 个答案:

答案 0 :(得分:6)

一般情况下,您无法对所有内容进行逆向工程。所以,你只有两种可能性:

  1. 在clang AST级别上做所有事情。
  2. 发送可能有助于恢复输入源某些方面的其他信息(例如通过元数据)。
  3. 但实际上,你不应该在LLVM IR级别上进行任何源到源的转换,它对于给定的目标来说是一个错误的工具。你肯定可以插入AST级别。例如。 clang源包含一个将ObjC代码转换为普通C的重写器。