class GlobalValue;
class Function;
class GlobalVariable;
+class InlineAsm;
class SymbolTable;
//===----------------------------------------------------------------------===//
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
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.
}
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;
};
// the subtype header files to test to see if the value is a subclass...
//
template <> inline bool isa_impl<Constant, Value>(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<Argument, Value>(const Value &Val) {
return Val.getValueType() == Value::ArgumentVal;
}
+template <> inline bool isa_impl<InlineAsm, Value>(const Value &Val) {
+ return Val.getValueType() == Value::InlineAsmVal;
+}
template <> inline bool isa_impl<Instruction, Value>(const Value &Val) {
return Val.getValueType() >= Value::InstructionVal;
}