Have 'addFnAttr' take the attribute enum value. Then have it build the attribute...
authorBill Wendling <isanbard@gmail.com>
Wed, 10 Oct 2012 03:12:49 +0000 (03:12 +0000)
committerBill Wendling <isanbard@gmail.com>
Wed, 10 Oct 2012 03:12:49 +0000 (03:12 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165595 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/Function.h
lib/Transforms/IPO/Inliner.cpp
lib/Transforms/Instrumentation/GCOVProfiling.cpp
lib/Transforms/Utils/CodeExtractor.cpp

index 5601c471f2802b902057d2aa2cb8b7665b465f4d..2781959eafdb09e5277ccfe21c4722c9b146cf47 100644 (file)
@@ -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.
index 876afd19f1835ecf5f5d4bf044ed193610a8705d..abcb25fd45553468b97f43beaea43258ca98b28d 100644 (file)
@@ -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,
index 66d8570108bd82a6b63639716436e24a10f4b7e1..e9192e5cdd52bda9f63aa4a26a0ddfd686cac8fc 100644 (file)
@@ -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<Function>(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);
index c545cd68c9870e7e64b8d6473ee8931a383164d4..281714f4c1001532532181d59f52ca5c72d547e1 100644 (file)
@@ -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);