[llvm-commits] CVS: llvm/lib/VMCore/Constants.cpp

Reid Spencer rspencer at reidspencer.com
Tue Feb 27 11:34:52 PST 2007


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:

> 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?

> 
> -Chris




More information about the llvm-commits mailing list