diff --git a/include/llvm/Function.h b/include/llvm/Function.h index 5601c471f28..2781959eafd 100644 --- a/include/llvm/Function.h +++ b/include/llvm/Function.h @@ -176,9 +176,11 @@ public: /// addFnAttr - Add function attributes to this function. /// - void addFnAttr(Attributes N) { + void addFnAttr(Attributes::AttrVal N) { // Function Attributes are stored at ~0 index - addAttribute(~0U, N); + Attributes::Builder B; + B.addAttribute(N); + addAttribute(~0U, Attributes::get(B)); } /// removeFnAttr - Remove function attributes from this function. @@ -221,9 +223,8 @@ public: bool doesNotAccessMemory() const { return getFnAttributes().hasAttribute(Attributes::ReadNone); } - void setDoesNotAccessMemory(bool DoesNotAccessMemory = true) { - if (DoesNotAccessMemory) addFnAttr(Attribute::ReadNone); - else removeFnAttr(Attribute::ReadNone); + void setDoesNotAccessMemory() { + addFnAttr(Attributes::ReadNone); } /// @brief Determine if the function does not access or only reads memory. @@ -231,27 +232,24 @@ public: return doesNotAccessMemory() || getFnAttributes().hasAttribute(Attributes::ReadOnly); } - void setOnlyReadsMemory(bool OnlyReadsMemory = true) { - if (OnlyReadsMemory) addFnAttr(Attribute::ReadOnly); - else removeFnAttr(Attribute::ReadOnly | Attribute::ReadNone); + void setOnlyReadsMemory() { + addFnAttr(Attributes::ReadOnly); } /// @brief Determine if the function cannot return. bool doesNotReturn() const { return getFnAttributes().hasAttribute(Attributes::NoReturn); } - void setDoesNotReturn(bool DoesNotReturn = true) { - if (DoesNotReturn) addFnAttr(Attribute::NoReturn); - else removeFnAttr(Attribute::NoReturn); + void setDoesNotReturn() { + addFnAttr(Attributes::NoReturn); } /// @brief Determine if the function cannot unwind. bool doesNotThrow() const { return getFnAttributes().hasAttribute(Attributes::NoUnwind); } - void setDoesNotThrow(bool DoesNotThrow = true) { - if (DoesNotThrow) addFnAttr(Attribute::NoUnwind); - else removeFnAttr(Attribute::NoUnwind); + void setDoesNotThrow() { + addFnAttr(Attributes::NoUnwind); } /// @brief True if the ABI mandates (or the user requested) that this @@ -259,11 +257,8 @@ public: bool hasUWTable() const { return getFnAttributes().hasAttribute(Attributes::UWTable); } - void setHasUWTable(bool HasUWTable = true) { - if (HasUWTable) - addFnAttr(Attribute::UWTable); - else - removeFnAttr(Attribute::UWTable); + void setHasUWTable() { + addFnAttr(Attributes::UWTable); } /// @brief True if this function needs an unwind table. diff --git a/lib/Transforms/IPO/Inliner.cpp b/lib/Transforms/IPO/Inliner.cpp index 876afd19f18..abcb25fd455 100644 --- a/lib/Transforms/IPO/Inliner.cpp +++ b/lib/Transforms/IPO/Inliner.cpp @@ -94,10 +94,10 @@ static bool InlineCallIfPossible(CallSite CS, InlineFunctionInfo &IFI, // If the inlined function had a higher stack protection level than the // calling function, then bump up the caller's stack protection level. if (Callee->getFnAttributes().hasAttribute(Attributes::StackProtectReq)) - Caller->addFnAttr(Attribute::StackProtectReq); + Caller->addFnAttr(Attributes::StackProtectReq); else if (Callee->getFnAttributes().hasAttribute(Attributes::StackProtect) && !Caller->getFnAttributes().hasAttribute(Attributes::StackProtectReq)) - Caller->addFnAttr(Attribute::StackProtect); + Caller->addFnAttr(Attributes::StackProtect); // Look at all of the allocas that we inlined through this call site. If we // have already inlined other allocas through other calls into this function, diff --git a/lib/Transforms/Instrumentation/GCOVProfiling.cpp b/lib/Transforms/Instrumentation/GCOVProfiling.cpp index 66d8570108b..e9192e5cdd5 100644 --- a/lib/Transforms/Instrumentation/GCOVProfiling.cpp +++ b/lib/Transforms/Instrumentation/GCOVProfiling.cpp @@ -682,9 +682,7 @@ void GCOVProfiler::insertCounterWriteout( "__llvm_gcov_init", M); F->setUnnamedAddr(true); F->setLinkage(GlobalValue::InternalLinkage); - Attributes::Builder B; - B.addAttribute(Attributes::NoInline); - F->addFnAttr(Attributes::get(B)); + F->addFnAttr(Attributes::NoInline); BB = BasicBlock::Create(*Ctx, "entry", F); Builder.SetInsertPoint(BB); @@ -703,9 +701,7 @@ void GCOVProfiler::insertIndirectCounterIncrement() { cast(GCOVProfiler::getIncrementIndirectCounterFunc()); Fn->setUnnamedAddr(true); Fn->setLinkage(GlobalValue::InternalLinkage); - Attributes::Builder B; - B.addAttribute(Attributes::NoInline); - Fn->addFnAttr(Attributes::get(B)); + Fn->addFnAttr(Attributes::NoInline); Type *Int32Ty = Type::getInt32Ty(*Ctx); Type *Int64Ty = Type::getInt64Ty(*Ctx); diff --git a/lib/Transforms/Utils/CodeExtractor.cpp b/lib/Transforms/Utils/CodeExtractor.cpp index c545cd68c98..281714f4c10 100644 --- a/lib/Transforms/Utils/CodeExtractor.cpp +++ b/lib/Transforms/Utils/CodeExtractor.cpp @@ -346,7 +346,7 @@ Function *CodeExtractor::constructFunction(const ValueSet &inputs, header->getName(), M); // If the old function is no-throw, so is the new one. if (oldFunction->doesNotThrow()) - newFunction->setDoesNotThrow(true); + newFunction->setDoesNotThrow(); newFunction->getBasicBlockList().push_back(newRootNode);