实际上如何降低llvm :: memset内部调用?

时间:2019-07-09 15:54:01

标签: c++ llvm llvm-clang

我有一个通行证,可以识别代码中的某种优化并将其缩短为我添加到include/llvm/IR/Intrinsics.td的内部调用。优化完成后,我想稍后将其降低至库调用。

我以llvm.memset为例,但是我不知道内在函数的降低位置。 CodeGen/IntrinsicLowering.cpp中有一些代码,但是每当我在其中添加代码的case语句时,就永远不会访问它。看来llvm.memset在SelectionDAG进程中正在降低。此外,我看来,许多不同的代码段都可以降低llvm.memset

  • Target/*/*FastISel.cpp通过调用Intrinsic::memset似乎降低了lowerCallTo
  • CodeGen/IntrinsicLowering.cpp似乎通过调用ReplaceCallWith来降低它。
  • CodeGen/SelectionDAG/SelectionDAG.cpp似乎使用getMemset

令人困惑的是,这些文件似乎是编译过程中不同部分的一部分,但对于memset似乎做同样的事情。当然,我误会了。

实际上谁在降低memset内在函数?此过程是否适合我的情况?还是有更简单的方法?

0 个答案:

没有答案