[llvm-commits] CVS: llvm/lib/VMCore/Constants.cpp
Reid Spencer
rspencer at reidspencer.com
Tue Feb 27 12:51:49 PST 2007
Chris,
Can't we just change this part of ConstantInt:
/// getTrue/getFalse - Return the singleton true/false values.
static inline ConstantInt *getTrue() {
if (TheTrueVal) return TheTrueVal;
return CreateTrueFalseVals(true);
}
static inline ConstantInt *getFalse() {
if (TheFalseVal) return TheFalseVal;
return CreateTrueFalseVals(false);
}
into:
/// getTrue/getFalse - Return the singleton true/false values.
static inline ConstantInt *getTrue() {
return get(Type::Int1Ty, 1);
}
static inline ConstantInt *getFalse() {
return get(Type::Int1Ty, 0);
}
and get rid of all the special handling of true/false values? Or have we
provided this simply as an optimization on frequently obtained integer
values?
Reid.
On Tue, 2007-02-27 at 11:34 -0800, 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:
>
> > 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
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
More information about the llvm-commits
mailing list