今天在群里看到一个朋友询问别名分析时为什么使用二元组的形式,而不是使用指针分析中的结合形式,我在CSDN中查阅资料时,发现了这篇文章1,其中区分了指针分析和别名分析,解答了那位朋友的问题。该文章中部分符号遗漏,推荐查看原论坛的文章,搬运至此。
阅读该文章时,发现对其中提到的MemoryLocation感兴趣,特意将链接找出来贴到这里。
文章1提到的ModRef部分,即4.2.2的3,已经封装到一个单独的文件,附链接在此。
继续查找别名分析的文章,找到了这篇文章2,看起来有部分内容是对LLVM的alias analysis的翻译,贴一个原文。
先这样,对别名分析不是特别懂,看的迷迷糊糊。
以后有机会的话可以看这篇博客。
贴一个专栏地址,这是作者之前的一个系列文章,我在知乎上关注过作者(原名小乖他爹,现名编译船夫)。
官方教程在这里,但是给出的是makefile的构建方式,不喜欢,以后在看。且现在直接从APT安装的LLVM,其头文件是可以默认引用的,不需要额外的配置。
LLVM的周报,好东西,暂存,支持邮件列表。
贴一下教程链接。
这篇文章真是好啊,第一次写pass的时候就用的这个。相当于提供了一个测试用的框架。
StringRef使用了Data和Length两个成员变量,如果将其直接转换为常量数组的话可能造成字符串截断,因为Data中可能有\0存在。
https://llvm.org/docs/ProgrammersManual.html#passing-strings-the-stringref-and-twine-classes
llvm在知乎上的搜索结果(未筛选)
https://www.zhihu.com/search?hybrid_search_extra=%7B%22sourceType%22%3A%22answer%22%2C%22sourceId%22%3A1115473828%7D&hybrid_search_source=Entity&q=llvm%20pass&search_source=Entity&type=content
在最近学习的过程中总是发现容易发散,没有中心,且很多好的资料,如果只存在本地的话既不容易在多个设备中流转,又不好标记,因此决定写一系列名为工作日志的文章,不奢求阅读数据,权当将好资料集中分享。