首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有办法让clang在没有其他优化的情况下生成TBAA元数据?

有没有办法让clang在没有其他优化的情况下生成TBAA元数据?
EN

Stack Overflow用户
提问于 2014-12-29 09:51:40
回答 2查看 2.1K关注 0票数 0

LLVM包含一个名为“基于类型的别名分析”(在github上传递源代码)的别名分析,它利用嵌入指令的!tbaa元数据。元数据信息类似于:

代码语言:javascript
复制
!1 = metadata !{metadata !2, metadata !2, i64 0}
!2 = metadata !{metadata !"int", metadata !3, i64 0}
!3 = metadata !{metadata !"omnipotent char", metadata !4, i64 0}
!4 = metadata !{metadata !"Simple C/C++ TBAA"}

似乎需要像clang这样的前端来生成元数据信息。

编译源代码文件而不传递任何优化参数(或-O0)不能生成上述元数据。到目前为止,我只发现我必须至少将-O1传递给clang才能得到这些;问题是,我不希望发生其他优化/转换(例如,不合并) ( clang -O1使用的传递类似于这个答案提供的结果)。

是否有办法达到这一目标?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-01-05 21:33:18

我不建议它用于生产,但你可以这样做:

clang -cc1 -O1 -no-struct-path-tbaa -禁用-llvm-optzns foo.cpp -emit-llvm -o -

要查看TBAA元数据(如果您也想查看该元数据,请删除-no struct tbaa)。

否则,您可以很容易地修改clang,使其始终打开TBAA元数据。

票数 1
EN

Stack Overflow用户

发布于 2020-05-18 14:15:52

答案有点过时了。我认为-disable-llvm-optzns已被废弃/删除。您可以使用这样的方法对驱动程序执行此操作:

clang -O2 -Xclang -disable-llvm-passes -S -emit-llvm

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27686595

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档