ubuntu - LLVM。添加函数属性信息

标签 ubuntu llvm

使用 LLVM 3.4,我创建了一个具有属性的函数:attributes #0 = { nounwind uwtable } .看起来还不错,但是 clang++ 在同一个函数中写入了更多信息:
attributes #0 = { nounwind uwtable "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf"="true" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "ssp-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }
如何将此信息添加到属性中? llc -march=cpp没有给出答案。
一些谷歌搜索将我带到 llvm::TargetOptions ,但是如何处理这个类,它并没有告诉。多可惜。

LLVM 3.4,Ubuntu 13.04 x64

最佳答案

这些是依赖于目标的属性。您可以以与创建与目标无关的方法非常相似的方式创建它们,例如通过 Attribute::get(context, "less-precise-fpmad", "false") .完整的图片是这样的:

LLVMContext c = ...
Function* f = ...
Attribute attr = Attribute::get(c, "less-precise-fpmad", "false");
f.addAttributes(0, AttributeSet::get(c, AttributeSet::FunctionIndex, attr));

关于ubuntu - LLVM。添加函数属性信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17809974/

相关文章:

macos - 与 Xcode 一起安装 LLVM 库

ubuntu - 在 i3 中使用来自 kwallet 的密码

linux - 如何在网卡太新而驱动程序无法包含在任何发行版中的机器上安装 Linux

ubuntu - 如何在 ubuntu 上安装 go 和 goisntall for doozer install

linux - 交叉编译围棋

c++ - 在 LLVM 中,你如何检查一个 block 是否是一个合并 block

c++ - LLVM 字符串值对象 : How can I retrieve the String from a Value?

c++ - 链接时 LLVM IR 类型被错误折叠(C++ API)

c++ - LLVM:生成运行时错误

docker - Docker 容器和主机之间的共享命名管道 - 跨平台