llvm: migrate to new parameter-bearing uwtable attr
In https://reviews.llvm.org/D114543 the uwtable attribute gained a flag so that we can ask for sync uwtables instead of async, as the former are much cheaper. The default is async, so that's what I've done here, but I left a TODO that we might be able to do better. While in here I went ahead and dropped support for removing uwtable attributes in rustc: we never did it, so I didn't write the extra C++ bridge code to make it work. Maybe I should have done the same thing with the `sync|async` parameter but we'll see.
This commit is contained in:
parent
52dd59ed21
commit
0958c8f4ca
5 changed files with 24 additions and 5 deletions
|
@ -334,6 +334,17 @@ extern "C" void LLVMRustAddStructRetAttr(LLVMValueRef Fn, unsigned Index,
|
|||
AddAttribute(F, Index, Attr);
|
||||
}
|
||||
|
||||
extern "C" void LLVMRustEmitUWTableAttr(LLVMValueRef Fn, bool Async) {
|
||||
Function *F = unwrap<Function>(Fn);
|
||||
#if LLVM_VERSION_LT(15, 0)
|
||||
Attribute Attr = Attribute::get(F->getContext(), Attribute::UWTable);
|
||||
#else
|
||||
Attribute Attr = Attribute::getWithUWTableKind(
|
||||
F->getContext(), Async ? UWTableKind::Async : UWTableKind::Sync);
|
||||
#endif
|
||||
AddAttribute(F, AttributeList::AttrIndex::FunctionIndex, Attr);
|
||||
}
|
||||
|
||||
extern "C" void LLVMRustAddFunctionAttrStringValue(LLVMValueRef Fn,
|
||||
unsigned Index,
|
||||
const char *Name,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue