Factor some code from the DomTree and PostDomTree calculate methods up into
[oota-llvm.git] / include / llvm / ParameterAttributes.h
index dcfe09514117ffb0200c82b00bde4a52ae56a9de..e2890f5a711324a31823008438be19a7bb232954 100644 (file)
@@ -30,13 +30,15 @@ namespace ParamAttr {
 /// @brief Function parameter attributes.
 enum Attributes {
   None       = 0,      ///< No attributes have been set
-  ZExt       = 1 << 0, ///< zero extended before/after call
-  SExt       = 1 << 1, ///< sign extended before/after call
-  NoReturn   = 1 << 2, ///< mark the function as not returning
-  InReg      = 1 << 3, ///< force argument to be passed in register
-  StructRet  = 1 << 4, ///< hidden pointer to structure to return
+  ZExt       = 1 << 0, ///< Zero extended before/after call
+  SExt       = 1 << 1, ///< Sign extended before/after call
+  NoReturn   = 1 << 2, ///< Mark the function as not returning
+  InReg      = 1 << 3, ///< Force argument to be passed in register
+  StructRet  = 1 << 4, ///< Hidden pointer to structure to return
   NoUnwind   = 1 << 5, ///< Function doesn't unwind stack
-  NoAlias    = 1 << 6  ///< Considered to not alias after call.
+  NoAlias    = 1 << 6, ///< Considered to not alias after call
+  ByVal      = 1 << 7, ///< Pass structure by value
+  Nest       = 1 << 8  ///< Nested function static chain
 };
 
 }
@@ -47,6 +49,13 @@ enum Attributes {
 struct ParamAttrsWithIndex {
   uint16_t attrs; ///< The attributes that are set, |'d together
   uint16_t index; ///< Index of the parameter for which the attributes apply
+  
+  static ParamAttrsWithIndex get(uint16_t idx, uint16_t attrs) {
+    ParamAttrsWithIndex P;
+    P.index = idx;
+    P.attrs = attrs;
+    return P;
+  }
 };
 
 /// @brief A vector of attribute/index pairs.