使用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
答案 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));