aboutsummaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorReid Spencer <rspencer@reidspencer.com>2007-04-09 06:06:57 +0000
committerReid Spencer <rspencer@reidspencer.com>2007-04-09 06:06:57 +0000
commite365af5aa2076a6d7f658ceb85ee852a293d9c42 (patch)
tree7f97dc3d455daa0c7624ae8b414b162889137d95 /include
parent0f65cad57f041a2e7d3e6e11809a795c13cbfec7 (diff)
For PR1146:
Remove the handling of ParameterAttributes from FunctionType as they are their own object defined in ParameterAttributes.h now. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35805 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include')
-rw-r--r--include/llvm/DerivedTypes.h45
1 files changed, 8 insertions, 37 deletions
diff --git a/include/llvm/DerivedTypes.h b/include/llvm/DerivedTypes.h
index ced84fd541..d9cf6b77db 100644
--- a/include/llvm/DerivedTypes.h
+++ b/include/llvm/DerivedTypes.h
@@ -31,6 +31,7 @@ class PointerValType;
class VectorValType;
class IntegerValType;
class APInt;
+class ParamAttrsList;
class DerivedType : public Type {
friend class Type;
@@ -137,22 +138,6 @@ public:
/// FunctionType - Class to represent function types
///
class FunctionType : public DerivedType {
-public:
- /// Function parameters can have attributes to indicate how they should be
- /// treated by optimizations and code generation. This enumeration lists the
- /// set of possible attributes.
- /// @brief Function parameter attributes enumeration.
- enum ParameterAttributes {
- NoAttributeSet = 0, ///< No attribute value has been set
- ZExtAttribute = 1, ///< zero extended before/after call
- SExtAttribute = 1 << 1, ///< sign extended before/after call
- NoReturnAttribute = 1 << 2, ///< mark the function as not returning
- InRegAttribute = 1 << 3, ///< force argument to be passed in register
- StructRetAttribute= 1 << 4, ///< hidden pointer to structure to return
- NoUnwindAttribute = 1 << 5 ///< Function doesn't unwind stack
- };
- typedef std::vector<ParameterAttributes> ParamAttrsList;
-private:
friend class TypeMap<FunctionValType, FunctionType>;
bool isVarArgs;
ParamAttrsList *ParamAttrs;
@@ -160,10 +145,10 @@ private:
FunctionType(const FunctionType &); // Do not implement
const FunctionType &operator=(const FunctionType &); // Do not implement
FunctionType(const Type *Result, const std::vector<const Type*> &Params,
- bool IsVarArgs, const ParamAttrsList &Attrs);
+ bool IsVarArgs, ParamAttrsList *Attrs = 0);
public:
- virtual ~FunctionType() { delete ParamAttrs; }
+ virtual ~FunctionType();
/// FunctionType::get - This static method is the primary way of constructing
/// a FunctionType.
///
@@ -171,10 +156,11 @@ public:
const Type *Result, ///< The result type
const std::vector<const Type*> &Params, ///< The types of the parameters
bool isVarArg, ///< Whether this is a variable argument length function
- const ParamAttrsList & Attrs = ParamAttrsList()
+ ParamAttrsList *Attrs = 0
///< Indicates the parameter attributes to use, if any. The 0th entry
///< in the list refers to the return type. Parameters are numbered
- ///< starting at 1.
+ ///< starting at 1. This argument must be on the heap and FunctionType
+ ///< owns it after its passed here.
);
inline bool isVarArg() const { return isVarArgs; }
@@ -192,28 +178,13 @@ public:
///
unsigned getNumParams() const { return NumContainedTys - 1; }
- bool isStructReturn() const {
- return (getNumParams() && paramHasAttr(1, StructRetAttribute));
- }
+ bool isStructReturn() const;
/// The parameter attributes for the \p ith parameter are returned. The 0th
/// parameter refers to the return type of the function.
/// @returns The ParameterAttributes for the \p ith parameter.
/// @brief Get the attributes for a parameter
- ParameterAttributes getParamAttrs(unsigned i) const;
-
- /// @brief Determine if a parameter attribute is set
- bool paramHasAttr(unsigned i, ParameterAttributes attr) const {
- return getParamAttrs(i) & attr;
- }
-
- /// @brief Return the number of parameter attributes this type has.
- unsigned getNumAttrs() const {
- return (ParamAttrs ? unsigned(ParamAttrs->size()) : 0);
- }
-
- /// @brief Convert a ParameterAttribute into its assembly text
- static std::string getParamAttrsText(ParameterAttributes Attr);
+ const ParamAttrsList *getParamAttrs() const { return ParamAttrs; }
// Implement the AbstractTypeUser interface.
virtual void refineAbstractType(const DerivedType *OldTy, const Type *NewTy);