From dce14cfacc232e80dbed68430183085fd39dea02 Mon Sep 17 00:00:00 2001 From: Erik Desjardins Date: Mon, 21 Feb 2022 14:47:56 -0500 Subject: Remove LLVM attribute removal This was necessary before, because `declare_raw_fn` would always apply the default optimization attributes to every declared function, and then `attributes::from_fn_attrs` would have to remove the default attributes in the case of, e.g. `#[optimize(speed)]` in a `-Os` build. However, every relevant callsite of `declare_raw_fn` (i.e. where we actually generate code for the function, and not e.g. a call to an intrinsic, where optimization attributes don't [?] matter) calls `from_fn_attrs`, so we can simply remove the attribute setting from `declare_raw_fn`, and rely on `from_fn_attrs` to apply the correct attributes all at once. --- compiler/rustc_llvm/llvm-wrapper/RustWrapper.cpp | 26 ------------------------ 1 file changed, 26 deletions(-) (limited to 'compiler/rustc_llvm/llvm-wrapper/RustWrapper.cpp') diff --git a/compiler/rustc_llvm/llvm-wrapper/RustWrapper.cpp b/compiler/rustc_llvm/llvm-wrapper/RustWrapper.cpp index d627af48ba5..3a1994f9a57 100644 --- a/compiler/rustc_llvm/llvm-wrapper/RustWrapper.cpp +++ b/compiler/rustc_llvm/llvm-wrapper/RustWrapper.cpp @@ -250,38 +250,12 @@ template static inline void AddAttributes(T *t, unsigned Index, t->setAttributes(PALNew); } -template static inline void RemoveAttributes(T *t, unsigned Index, - LLVMRustAttribute *RustAttrs, - size_t RustAttrsLen) { - AttributeList PAL = t->getAttributes(); - AttributeList PALNew; -#if LLVM_VERSION_LT(14, 0) - AttrBuilder B; - for (LLVMRustAttribute RustAttr : makeArrayRef(RustAttrs, RustAttrsLen)) - B.addAttribute(fromRust(RustAttr)); - PALNew = PAL.removeAttributes(t->getContext(), Index, B); -#else - AttributeMask Mask; - for (LLVMRustAttribute RustAttr : makeArrayRef(RustAttrs, RustAttrsLen)) - Mask.addAttribute(fromRust(RustAttr)); - PALNew = PAL.removeAttributesAtIndex(t->getContext(), Index, Mask); -#endif - t->setAttributes(PALNew); -} - extern "C" void LLVMRustAddFunctionAttributes(LLVMValueRef Fn, unsigned Index, LLVMAttributeRef *Attrs, size_t AttrsLen) { Function *F = unwrap(Fn); AddAttributes(F, Index, Attrs, AttrsLen); } -extern "C" void LLVMRustRemoveFunctionAttributes(LLVMValueRef Fn, unsigned Index, - LLVMRustAttribute *RustAttrs, - size_t RustAttrsLen) { - Function *F = unwrap(Fn); - RemoveAttributes(F, Index, RustAttrs, RustAttrsLen); -} - extern "C" void LLVMRustAddCallSiteAttributes(LLVMValueRef Instr, unsigned Index, LLVMAttributeRef *Attrs, size_t AttrsLen) { CallBase *Call = unwrap(Instr); -- cgit 1.4.1-3-g733a5