是否可以在编译时使用GHC API修改程序?

mat*_*ash 11 haskell ghc ghc-api

我想通过捎带进入GHC编译过程并改变其核心表示来测试实现编译器优化.想法是有类似的东西:

runGhc (Just libdir) $ do
   ...
   c <- compileToCoreModule targetFile
   compileCoreToObj False (modify c)
   ...
Run Code Online (Sandbox Code Playgroud)

其中modify采用Core表示并返回修改后的版本.但是,这段代码失败了(即使修改什么也没做),但是没有非常有用的消息:

expectJust mkStubPaths
Run Code Online (Sandbox Code Playgroud)

关于如何使这项工作的任何想法,或者甚至可能以这种方式实现代码转换?

Sim*_*low 9

compileCoreToObj对我来说听起来像个错误.请报告.


Fun*_*lad 6

GHC现在支持插件,它看起来完全符合您的要求.