diff options
| author | Chris Lattner <sabre@nondot.org> | 2003-10-03 19:34:51 +0000 |
|---|---|---|
| committer | Chris Lattner <sabre@nondot.org> | 2003-10-03 19:34:51 +0000 |
| commit | 3e88ef9f93f779f5c7d996fe6d35f35ad864abab (patch) | |
| tree | f441c31325ea730338a53843351f596da4748029 /llvm/lib | |
| parent | 2c6cecf32191da200ee7de1a4da204ec09f2343c (diff) | |
| download | bcm5719-llvm-3e88ef9f93f779f5c7d996fe6d35f35ad864abab.tar.gz bcm5719-llvm-3e88ef9f93f779f5c7d996fe6d35f35ad864abab.zip | |
Minor random speedup: make Constant::getNullValue only call ConstantFOO::get
once!
llvm-svn: 8845
Diffstat (limited to 'llvm/lib')
| -rw-r--r-- | llvm/lib/VMCore/Constants.cpp | 58 |
1 files changed, 45 insertions, 13 deletions
diff --git a/llvm/lib/VMCore/Constants.cpp b/llvm/lib/VMCore/Constants.cpp index c252247dd0b..8fb665ac0e1 100644 --- a/llvm/lib/VMCore/Constants.cpp +++ b/llvm/lib/VMCore/Constants.cpp @@ -59,25 +59,57 @@ void Constant::destroyConstantImpl() { // Static constructor to create a '0' constant of arbitrary type... Constant *Constant::getNullValue(const Type *Ty) { switch (Ty->getPrimitiveID()) { - case Type::BoolTyID: return ConstantBool::get(false); - case Type::SByteTyID: - case Type::ShortTyID: - case Type::IntTyID: - case Type::LongTyID: return ConstantSInt::get(Ty, 0); - - case Type::UByteTyID: - case Type::UShortTyID: - case Type::UIntTyID: - case Type::ULongTyID: return ConstantUInt::get(Ty, 0); + case Type::BoolTyID: { + static Constant *NullBool = ConstantBool::get(false); + return NullBool; + } + case Type::SByteTyID: { + static Constant *NullSByte = ConstantSInt::get(Type::SByteTy, 0); + return NullSByte; + } + case Type::UByteTyID: { + static Constant *NullUByte = ConstantUInt::get(Type::UByteTy, 0); + return NullUByte; + } + case Type::ShortTyID: { + static Constant *NullShort = ConstantSInt::get(Type::ShortTy, 0); + return NullShort; + } + case Type::UShortTyID: { + static Constant *NullUShort = ConstantUInt::get(Type::UShortTy, 0); + return NullUShort; + } + case Type::IntTyID: { + static Constant *NullInt = ConstantSInt::get(Type::IntTy, 0); + return NullInt; + } + case Type::UIntTyID: { + static Constant *NullUInt = ConstantUInt::get(Type::UIntTy, 0); + return NullUInt; + } + case Type::LongTyID: { + static Constant *NullLong = ConstantSInt::get(Type::LongTy, 0); + return NullLong; + } + case Type::ULongTyID: { + static Constant *NullULong = ConstantUInt::get(Type::ULongTy, 0); + return NullULong; + } - case Type::FloatTyID: - case Type::DoubleTyID: return ConstantFP::get(Ty, 0); + case Type::FloatTyID: { + static Constant *NullFloat = ConstantFP::get(Type::FloatTy, 0); + return NullFloat; + } + case Type::DoubleTyID: { + static Constant *NullDouble = ConstantFP::get(Type::DoubleTy, 0); + return NullDouble; + } case Type::PointerTyID: return ConstantPointerNull::get(cast<PointerType>(Ty)); + case Type::StructTyID: { const StructType *ST = cast<StructType>(Ty); - const StructType::ElementTypes &ETs = ST->getElementTypes(); std::vector<Constant*> Elements; Elements.resize(ETs.size()); |

