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
+ NoUnwind = 1 << 5, ///< Function doesn't unwind stack
+ NoAlias = 1 << 6 ///< Considered to not alias after call.
};
}
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.
return attrs[attr_index].index;
}
+ uint16_t getParamAttrsAtIndex(unsigned attr_index) const {
+ return attrs[attr_index].attrs;
+ }
+
/// Determines how many parameter attributes are set in this ParamAttrsList.
/// This says nothing about how many parameters the function has. It also
/// says nothing about the highest parameter index that has attributes.