X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=include%2Fllvm%2FValue.h;h=5c50fd0a5d3b3104f64b803c9e23b92f4148ffed;hb=6fb568f77e6766871ad07b3b206571e96b56dfb5;hp=d8679a85dc7c22e2b3dc97a92a7ea63daff2b15a;hpb=9769ab22265b313171d201b5928688524a01bd87;p=oota-llvm.git diff --git a/include/llvm/Value.h b/include/llvm/Value.h index d8679a85dc7..5c50fd0a5d3 100644 --- a/include/llvm/Value.h +++ b/include/llvm/Value.h @@ -31,6 +31,7 @@ class BasicBlock; class GlobalValue; class Function; class GlobalVariable; +class InlineAsm; class SymbolTable; //===----------------------------------------------------------------------===// @@ -51,7 +52,8 @@ private: PATypeHolder Ty; Use *UseList; - friend class SymbolTable; // Allow SymbolTable to directly poke Name. + friend class ValueSymbolTable; // Allow ValueSymbolTable to directly mod Name. + friend class SymbolTable; // Allow SymbolTable to directly poke Name. std::string Name; void operator=(const Value &); // Do not implement @@ -146,16 +148,27 @@ public: UndefValueVal, // This is an instance of UndefValue ConstantExprVal, // This is an instance of ConstantExpr ConstantAggregateZeroVal, // This is an instance of ConstantAggregateNull - SimpleConstantVal, // This is some other type of Constant + ConstantBoolVal, // This is an instance of ConstantBool + ConstantSIntVal, // This is an instance of ConstantSInt + ConstantUIntVal, // This is an instance of ConstantUInt + ConstantFPVal, // This is an instance of ConstantFP + ConstantArrayVal, // This is an instance of ConstantArray + ConstantStructVal, // This is an instance of ConstantStruct + ConstantPackedVal, // This is an instance of ConstantPacked + ConstantPointerNullVal, // This is an instance of ConstantPointerNull + InlineAsmVal, // This is an instance of InlineAsm InstructionVal, // This is an instance of Instruction - ValueListVal // This is for bcreader, a special ValTy + + // Markers: + ConstantFirstVal = FunctionVal, + ConstantLastVal = ConstantPointerNullVal }; unsigned getValueType() const { return SubclassID; } // Methods for support type inquiry through isa, cast, and dyn_cast: - static inline bool classof(const Value *V) { + static inline bool classof(const Value *) { return true; // Values are always values. } @@ -165,7 +178,7 @@ public: private: /// FIXME: this is a gross hack, needed by another gross hack. Eliminate! - void setValueType(unsigned VT) { SubclassID = VT; } + void setValueType(unsigned short VT) { SubclassID = VT; } friend class Instruction; }; @@ -195,16 +208,15 @@ void Use::set(Value *V) { // the subtype header files to test to see if the value is a subclass... // template <> inline bool isa_impl(const Value &Val) { - return Val.getValueType() == Value::SimpleConstantVal || - Val.getValueType() == Value::FunctionVal || - Val.getValueType() == Value::GlobalVariableVal || - Val.getValueType() == Value::ConstantExprVal || - Val.getValueType() == Value::ConstantAggregateZeroVal || - Val.getValueType() == Value::UndefValueVal; + return Val.getValueType() >= Value::ConstantFirstVal && + Val.getValueType() <= Value::ConstantLastVal; } template <> inline bool isa_impl(const Value &Val) { return Val.getValueType() == Value::ArgumentVal; } +template <> inline bool isa_impl(const Value &Val) { + return Val.getValueType() == Value::InlineAsmVal; +} template <> inline bool isa_impl(const Value &Val) { return Val.getValueType() >= Value::InstructionVal; }