Removed unused parameters.
[oota-llvm.git] / include / llvm / Function.h
index ef824579262f0afa4d1f9a6e7c1b07ed781b688c..9954418ab8522debb8a989bc5737659f1db2a168 100644 (file)
@@ -51,7 +51,8 @@ template<> struct ilist_traits<Argument>
   static int getListOffset();
 };
 
-class Function : public GlobalValue, public Annotable {
+class Function : public GlobalValue, public Annotable,
+                 public ilist_node<Function> {
 public:
   typedef iplist<Argument> ArgumentListType;
   typedef iplist<BasicBlock> BasicBlockListType;
@@ -76,18 +77,6 @@ private:
   friend class SymbolTableListTraits<Function, Module>;
 
   void setParent(Module *parent);
-  Function *Prev, *Next;
-  void setNext(Function *N) { Next = N; }
-  void setPrev(Function *N) { Prev = N; }
-
-  // getNext/Prev - Return the next or previous function in the list.  These
-  // methods should never be used directly, and are only used to implement the
-  // function list as part of the module.
-  //
-  Function *getNext()             { return Next; }
-  const Function *getNext() const { return Next; }
-  Function *getPrev()             { return Prev; }
-  const Function *getPrev() const { return Prev; }
 
   /// hasLazyArguments/CheckLazyArguments - The argument list of a function is
   /// built on demand, so that the list isn't allocated until the first client
@@ -174,29 +163,49 @@ public:
   /// addParamAttr - adds the attribute to the list of attributes.
   void addParamAttr(unsigned i, ParameterAttributes attr);
   
+  /// removeParamAttr - removes the attribute from the list of attributes.
+  void removeParamAttr(unsigned i, ParameterAttributes attr);
+
   /// @brief Extract the alignment for a call or parameter (0=unknown).
   unsigned getParamAlignment(unsigned i) const {
     return ParamAttrs.getParamAlignment(i);
   }
 
-  /// @brief Determine if the function cannot return.
-  bool doesNotReturn() const { return paramHasAttr(0, ParamAttr::NoReturn); }
-  void setDoesNotThrow(bool doesNotThrow = true);
-
-  /// @brief Determine if the function cannot unwind.
-  bool doesNotThrow() const {
-    return paramHasAttr(0, ParamAttr::NoUnwind);
-  }
-
   /// @brief Determine if the function does not access memory.
   bool doesNotAccessMemory() const {
     return paramHasAttr(0, ParamAttr::ReadNone);
   }
+  void setDoesNotAccessMemory(bool DoesNotAccessMemory = true) {
+    if (DoesNotAccessMemory) addParamAttr(0, ParamAttr::ReadNone);
+    else removeParamAttr(0, ParamAttr::ReadNone);
+  }
 
   /// @brief Determine if the function does not access or only reads memory.
   bool onlyReadsMemory() const {
     return doesNotAccessMemory() || paramHasAttr(0, ParamAttr::ReadOnly);
   }
+  void setOnlyReadsMemory(bool OnlyReadsMemory = true) {
+    if (OnlyReadsMemory) addParamAttr(0, ParamAttr::ReadOnly);
+    else removeParamAttr(0, ParamAttr::ReadOnly | ParamAttr::ReadNone);
+  }
+
+  /// @brief Determine if the function cannot return.
+  bool doesNotReturn() const {
+    return paramHasAttr(0, ParamAttr::NoReturn);
+  }
+  void setDoesNotReturn(bool DoesNotReturn = true) {
+    if (DoesNotReturn) addParamAttr(0, ParamAttr::NoReturn);
+    else removeParamAttr(0, ParamAttr::NoReturn);
+  }
+
+  /// @brief Determine if the function cannot unwind.
+  bool doesNotThrow() const {
+    return paramHasAttr(0, ParamAttr::NoUnwind);
+  }
+  void setDoesNotThrow(bool DoesNotThrow = true) {
+    if (DoesNotThrow) addParamAttr(0, ParamAttr::NoUnwind);
+    else removeParamAttr(0, ParamAttr::NoUnwind);
+  }
 
   /// @brief Determine if the function returns a structure through first 
   /// pointer argument.