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


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

runGhc (Just libdir) $ do
   ...
   c <- compileToCoreModule targetFile
   compileCoreToObj False (modify c)
   ...

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

expectJust mkStubPaths

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


7862
2017-10-05 14:42


起源



答案:


这听起来像是一个bug compileCoreToObj 对我来说。请 报告


9
2017-10-05 19:40



我对报告它犹豫不决,因为我不确定我是否正确使用这些功能。有这些变换的例子吗? - matiash
我不知道任何具体的例子,不。 - Simon Marlow
这个问题有进展吗?我今天尝试了完全相同的代码,它导致了相同的错误消息。 - Wojciech Danilo


答案:


这听起来像是一个bug compileCoreToObj 对我来说。请 报告


9
2017-10-05 19:40



我对报告它犹豫不决,因为我不确定我是否正确使用这些功能。有这些变换的例子吗? - matiash
我不知道任何具体的例子,不。 - Simon Marlow
这个问题有进展吗?我今天尝试了完全相同的代码,它导致了相同的错误消息。 - Wojciech Danilo


GHC支持 插件 现在,这似乎完全符合你的要求。


6
2018-01-21 08:00