aboutsummaryrefslogtreecommitdiff
path: root/include/llvm/Value.h
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2005-09-27 06:08:32 +0000
committerChris Lattner <sabre@nondot.org>2005-09-27 06:08:32 +0000
commit225e8dd2f512e3e6840ba7cb1570fdc4d56a853f (patch)
tree67a27bd3b6c0cf2740ba46ab743883934723d6a1 /include/llvm/Value.h
parenta9ec8ab32bce9021c9501b45eea6bbc76ffeb207 (diff)
Split SimpleConstantVal up into its components, so each Constant subclass gets
a different enum value. This allows 'classof' for these to be really simple, not needing to call getType() anymore. This speeds up isa/dyncast/etc for constants, and also makes them smaller. For example, the text section of a release build of InstCombine.cpp shrinks from 230037 bytes to 216363 bytes, a 6% reduction. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23466 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm/Value.h')
-rw-r--r--include/llvm/Value.h21
1 files changed, 14 insertions, 7 deletions
diff --git a/include/llvm/Value.h b/include/llvm/Value.h
index 91c8cbc068..f71491d36e 100644
--- a/include/llvm/Value.h
+++ b/include/llvm/Value.h
@@ -146,8 +146,19 @@ 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
InstructionVal, // This is an instance of Instruction
+
+ // Markers:
+ ConstantFirstVal = FunctionVal,
+ ConstantLastVal = ConstantPointerNullVal,
};
unsigned getValueType() const {
return SubclassID;
@@ -194,12 +205,8 @@ void Use::set(Value *V) {
// 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;