如何将数据从clang前端插件传递到优化器/ llvm传递?

时间:2019-04-08 19:28:31

标签: c++ clang llvm

我不确定如何将数据从cfe插件转发到llvm pass?

我有一个clang前端插件,可以聚合反射数据并将其保存到向量中。我也有一个llvm通道,它通过JIT编译某些用户代码函数并在编译时对其进行评估。现在,我想将聚合的反射数据传递给LLVM传递,以便可以将其用作JIT编译函数的参数。

我想出了一些主意,但我真的不相信它们有什么好处,甚至可能:

  1. 是否可以将clang前端插件和llvm传递都放入一个动态共享对象中,并使用以下命令加载它,并在共享对象中使用全局变量来共享数据?
public class TableAWriter implements ItemWriter<TableA>{
    @Autowired
    private TableARepository TableARepository;

    @Override
    public void write(List<? extends TableA> items) throws Exception {
        TableARepository.saveAll(items);
    }
}
  1. 将所有数据转储到实际的LLVM IR全局变量中,并在llvm传递期间将其提取

  2. 我想我可以序列化数据并在llvm传递中反序列化它,但是我不确定这是否也是一种好方法?

还有其他/更好的解决方案吗?

我实质上希望用户能够将元程序作为代码库的一部分来编写。 类似于Jonathan Blow在他的编程语言Jai中所做的事情。 这是他演示的演示文稿:https://www.youtube.com/watch?v=gWv_vUgbmug

0 个答案:

没有答案