LLVM。添加功能属性信息

时间:2013-07-23 12:16:24

标签: 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

1 个答案:

答案 0 :(得分:1)

这些是与目标相关的属性。您可以以非常类似的方式创建那些创建与目标无关的方法,例如通过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));