add a couple of enum values
[oota-llvm.git] / include / llvm / Function.h
index 773f69bc8dc93531b1714f2132511d191409ca39..58184de3b18993c9746d75fe492a15c2c47c0603 100644 (file)
@@ -1,13 +1,13 @@
 //===-- llvm/Function.h - Class to represent a single function --*- C++ -*-===//
-// 
+//
 //                     The LLVM Compiler Infrastructure
 //
 // This file was developed by the LLVM research group and is distributed under
 // the University of Illinois Open Source License. See LICENSE.TXT for details.
-// 
+//
 //===----------------------------------------------------------------------===//
 //
-// This file contains the declaration of the Function class, which represents a 
+// This file contains the declaration of the Function class, which represents a
 // single function/procedure in LLVM.
 //
 // A function basically consists of a list of basic blocks, a list of arguments,
@@ -57,8 +57,6 @@ public:
 
   typedef ArgumentListType::iterator arg_iterator;
   typedef ArgumentListType::const_iterator const_arg_iterator;
-  typedef arg_iterator aiterator; // legacy, deprecated
-  typedef const_arg_iterator const_aiterator; // legacy, deprecated
 
 private:
   // Important things that make up a function!
@@ -66,7 +64,8 @@ private:
   ArgumentListType ArgumentList;        // The formal arguments
 
   SymbolTable *SymTab;
-  
+  unsigned CallingConvention;
+
   friend class SymbolTableListTraits<Function, Module, Module>;
 
   void setParent(Module *parent);
@@ -106,6 +105,12 @@ public:
   unsigned getIntrinsicID() const;
   bool isIntrinsic() const { return getIntrinsicID() != 0; }
 
+  /// getCallingConv()/setCallingConv(uint) - These method get and set the
+  /// calling convention of this function.  The enum values for the known
+  /// calling conventions are defined in CallingConv.h.
+  unsigned getCallingConv() const { return CallingConvention; }
+  void setCallingConv(unsigned CC) { CallingConvention = CC; }
+
   /// renameLocalSymbols - This method goes through the Function's symbol table
   /// and renames any symbols that conflict with symbols at global scope.  This
   /// is required before printing out to a textual form, to ensure that there is
@@ -161,7 +166,7 @@ public:
   inline       SymbolTable &getSymbolTable()       { return *SymTab; }
   inline const SymbolTable &getSymbolTable() const { return *SymTab; }
 
-  
+
   //===--------------------------------------------------------------------===//
   // BasicBlock iterator forwarding functions
   //
@@ -188,17 +193,6 @@ public:
   size_t                      arg_size () const { return ArgumentList.size();  }
   bool                        arg_empty() const { return ArgumentList.empty(); }
 
-  //===--------------------------------------------------------------------===//
-  // Argument iterator forwarding functions (legacy, deprecated, will be removed)
-  //
-  arg_iterator                abegin()       { return ArgumentList.begin(); }
-  const_arg_iterator          abegin() const { return ArgumentList.begin(); }
-  arg_iterator                aend  ()       { return ArgumentList.end();   }
-  const_arg_iterator          aend  () const { return ArgumentList.end();   }
-
-  size_t                       asize() const { return ArgumentList.size();  }
-  bool                        aempty() const { return ArgumentList.empty(); }
-
   virtual void print(std::ostream &OS) const { print(OS, 0); }
   void print(std::ostream &OS, AssemblyAnnotationWriter *AAW) const;
 
@@ -209,7 +203,7 @@ public:
   /// in your path.
   ///
   void viewCFG() const;
-  
+
   /// viewCFGOnly - This function is meant for use from the debugger.  It works
   /// just like viewCFG, but it does not include the contents of basic blocks
   /// into the nodes, just the label.  If you are only interested in the CFG
@@ -228,7 +222,7 @@ public:
   /// 'delete' a whole module at a time, even though there may be circular
   /// references... first all references are dropped, and all use counts go to
   /// zero.  Then everything is deleted for real.  Note that no operations are
-  /// valid on an object that has "dropped all references", except operator 
+  /// valid on an object that has "dropped all references", except operator
   /// delete.
   ///
   /// Since no other object in the module can have references into the body of a