diff options
author | Chris Lattner <sabre@nondot.org> | 2004-07-11 08:01:11 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2004-07-11 08:01:11 +0000 |
commit | 5f90cb8c9838ab03feef93c9dacd5ff652e5d8d2 (patch) | |
tree | f9c04c668d69431a281a1a1b250a0b29e19df9d7 /lib/ExecutionEngine/ExecutionEngine.cpp | |
parent | 7c38def077bc75a12262a5433b1fcebe310bc2b2 (diff) |
Make add constantexprs work with all types, fixing the regressions from last night
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14760 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/ExecutionEngine/ExecutionEngine.cpp')
-rw-r--r-- | lib/ExecutionEngine/ExecutionEngine.cpp | 32 |
1 files changed, 28 insertions, 4 deletions
diff --git a/lib/ExecutionEngine/ExecutionEngine.cpp b/lib/ExecutionEngine/ExecutionEngine.cpp index 4ece8b9c84..465b19e42d 100644 --- a/lib/ExecutionEngine/ExecutionEngine.cpp +++ b/lib/ExecutionEngine/ExecutionEngine.cpp @@ -208,14 +208,38 @@ GenericValue ExecutionEngine::getConstantValue(const Constant *C) { } case Instruction::Add: - if (CE->getOperand(0)->getType() == Type::LongTy || - CE->getOperand(0)->getType() == Type::ULongTy) + switch (CE->getOperand(0)->getType()->getTypeID()) { + default: assert(0 && "Bad add type!"); abort(); + case Type::LongTyID: + case Type::ULongTyID: Result.LongVal = getConstantValue(CE->getOperand(0)).LongVal + getConstantValue(CE->getOperand(1)).LongVal; - else break; + case Type::IntTyID: + case Type::UIntTyID: + Result.IntVal = getConstantValue(CE->getOperand(0)).IntVal + + getConstantValue(CE->getOperand(1)).IntVal; + break; + case Type::ShortTyID: + case Type::UShortTyID: + Result.ShortVal = getConstantValue(CE->getOperand(0)).ShortVal + + getConstantValue(CE->getOperand(1)).ShortVal; + break; + case Type::SByteTyID: + case Type::UByteTyID: + Result.SByteVal = getConstantValue(CE->getOperand(0)).SByteVal + + getConstantValue(CE->getOperand(1)).SByteVal; + break; + case Type::FloatTyID: + Result.FloatVal = getConstantValue(CE->getOperand(0)).FloatVal + + getConstantValue(CE->getOperand(1)).FloatVal; + break; + case Type::DoubleTyID: + Result.DoubleVal = getConstantValue(CE->getOperand(0)).DoubleVal + + getConstantValue(CE->getOperand(1)).DoubleVal; + break; + } return Result; - default: break; } |