On Feb 27, 2007, at 11:34 AM, Reid Spencer wrote: > On Tue, 2007-02-27 at 09:10 -0800, Chris Lattner wrote: >>> Index: llvm/lib/VMCore/Constants.cpp >>> diff -u llvm/lib/VMCore/Constants.cpp:1.222 llvm/lib/VMCore/ >>> Constants.cpp:1.223 >>> --- llvm/lib/VMCore/Constants.cpp:1.222 Mon Feb 26 21:05:06 2007 >>> +++ llvm/lib/VMCore/Constants.cpp Tue Feb 27 01:57:53 2007 >>> @@ -118,7 +118,7 @@ >>> if (ITy->getBitWidth() == 1) >>> return ConstantInt::getTrue(); >>> else >>> - return ConstantInt::get(Ty, int64_t(-1)); >>> + return ConstantInt::get(Ty, APInt::getAllOnesValue(ITy- >>>> getBitWidth())); >>> return 0; >>> } >> >> The special case for 'i1' can be removed, right? > > I assumed the special case was because of this mess: >
Nope, it's not needed, ConstantInt::get(Type::Int1Ty, x) works. >> ConstantInt *ConstantInt::TheTrueVal = 0; >> ConstantInt *ConstantInt::TheFalseVal = 0; >> >> namespace llvm { >> void CleanupTrueFalse(void *) { >> ConstantInt::ResetTrueFalse(); >> } >> } >> >> static ManagedCleanup<llvm::CleanupTrueFalse> TrueFalseCleanup; >> >> ConstantInt *ConstantInt::CreateTrueFalseVals(bool WhichOne) { >> assert(TheTrueVal == 0 && TheFalseVal == 0); >> TheTrueVal = get(Type::Int1Ty, 1); >> TheFalseVal = get(Type::Int1Ty, 0); >> >> // Ensure that llvm_shutdown nulls out TheTrueVal/TheFalseVal. >> TrueFalseCleanup.Register(); >> >> return WhichOne ? TheTrueVal : TheFalseVal; >> } > > why do we need this? This is needed to make ConstantInt::getTrue() / getFalse() efficient. -Chris _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits