[llvm] r185095 - [APFloat] Removed APFloat constructor which initialized to either zero/NaN but allowed you to arbitrarily set the category of the float.

Bill Schmidt wschmidt at linux.vnet.ibm.com
Fri Jun 28 08:53:19 PDT 2013


On Thu, 2013-06-27 at 13:43 -0700, Michael Gottesman wrote:
> This was causing failures on the mips/ppc bots on an x86 file check
> test which did not occur on the x86 bots = /.
> 
> 
> I reverted while I am investigating.

Hi Michael,

You're off the hook. ;)  It was r185094 that introduced the regression.

Thanks,
Bill


> 
> 
> Michael
> 
> On Jun 27, 2013, at 12:50 PM, Michael Gottesman <mgottesman at apple.com>
> wrote:
> 
> > Author: mgottesman
> > Date: Thu Jun 27 14:50:52 2013
> > New Revision: 185095
> > 
> > URL: http://llvm.org/viewvc/llvm-project?rev=185095&view=rev
> > Log:
> > [APFloat] Removed APFloat constructor which initialized to either
> > zero/NaN but allowed you to arbitrarily set the category of the
> > float.
> > 
> > The category which an APFloat belongs to should be dependent on the
> > actual value that the APFloat has, not be arbitrarily passed in by
> > the
> > user. This will prevent inconsistency bugs where the category and
> > the
> > actual value in APFloat differ.
> > 
> > I also fixed up all of the references to this constructor (which
> > were
> > only in LLVM).
> > 
> > Modified:
> >    llvm/trunk/include/llvm/ADT/APFloat.h
> >    llvm/trunk/lib/Support/APFloat.cpp
> >    llvm/trunk/lib/Transforms/InstCombine/InstCombineCompares.cpp
> > 
> > Modified: llvm/trunk/include/llvm/ADT/APFloat.h
> > URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/ADT/APFloat.h?rev=185095&r1=185094&r2=185095&view=diff
> > ==============================================================================
> > --- llvm/trunk/include/llvm/ADT/APFloat.h (original)
> > +++ llvm/trunk/include/llvm/ADT/APFloat.h Thu Jun 27 14:50:52 2013
> > @@ -191,7 +191,6 @@ public:
> >   APFloat(const fltSemantics &); // Default construct to 0.0
> >   APFloat(const fltSemantics &, StringRef);
> >   APFloat(const fltSemantics &, integerPart);
> > -  APFloat(const fltSemantics &, fltCategory, bool negative);
> >   APFloat(const fltSemantics &, uninitializedTag);
> >   APFloat(const fltSemantics &, const APInt &);
> >   explicit APFloat(double d);
> > 
> > Modified: llvm/trunk/lib/Support/APFloat.cpp
> > URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Support/APFloat.cpp?rev=185095&r1=185094&r2=185095&view=diff
> > ==============================================================================
> > --- llvm/trunk/lib/Support/APFloat.cpp (original)
> > +++ llvm/trunk/lib/Support/APFloat.cpp Thu Jun 27 14:50:52 2013
> > @@ -795,17 +795,6 @@ APFloat::APFloat(const fltSemantics &our
> >   initialize(&ourSemantics);
> > }
> > 
> > -APFloat::APFloat(const fltSemantics &ourSemantics,
> > -                 fltCategory ourCategory, bool negative) {
> > -  initialize(&ourSemantics);
> > -  category = ourCategory;
> > -  sign = negative;
> > -  if (isFiniteNonZero())
> > -    category = fcZero;
> > -  else if (ourCategory == fcNaN)
> > -    makeNaN();
> > -}
> > -
> > APFloat::APFloat(const fltSemantics &ourSemantics, StringRef text) {
> >   initialize(&ourSemantics);
> >   convertFromString(text, rmNearestTiesToEven);
> > @@ -2406,8 +2395,8 @@ APFloat::roundSignificandWithExponent(co
> >     excessPrecision = calcSemantics.precision -
> > semantics->precision;
> >     truncatedBits = excessPrecision;
> > 
> > -    APFloat decSig(calcSemantics, fcZero, sign);
> > -    APFloat pow5(calcSemantics, fcZero, false);
> > +    APFloat decSig = APFloat::getZero(calcSemantics, sign);
> > +    APFloat pow5(calcSemantics);
> > 
> >     sigStatus = decSig.convertFromUnsignedParts(decSigParts,
> > sigPartCount,
> >                                                 rmNearestTiesToEven);
> > @@ -3388,15 +3377,16 @@ APFloat APFloat::getSmallest(const fltSe
> > }
> > 
> > APFloat APFloat::getSmallestNormalized(const fltSemantics &Sem, bool
> > Negative) {
> > -  APFloat Val(Sem, fcNormal, Negative);
> > +  APFloat Val(Sem, uninitialized);
> > 
> >   // We want (in interchange format):
> >   //   sign = {Negative}
> >   //   exponent = 0..0
> >   //   significand = 10..0
> > 
> > -  Val.exponent = Sem.minExponent;
> >   Val.zeroSignificand();
> > +  Val.sign = Negative;
> > +  Val.exponent = Sem.minExponent;
> >   Val.significandParts()[partCountForBits(Sem.precision)-1] |=
> >     (((integerPart) 1) << ((Sem.precision - 1) % integerPartWidth));
> > 
> > 
> > Modified:
> > llvm/trunk/lib/Transforms/InstCombine/InstCombineCompares.cpp
> > URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/InstCombine/InstCombineCompares.cpp?rev=185095&r1=185094&r2=185095&view=diff
> > ==============================================================================
> > --- llvm/trunk/lib/Transforms/InstCombine/InstCombineCompares.cpp
> > (original)
> > +++ llvm/trunk/lib/Transforms/InstCombine/InstCombineCompares.cpp
> > Thu Jun 27 14:50:52 2013
> > @@ -2888,7 +2888,7 @@ Instruction *InstCombiner::FoldFCmp_IntT
> >   if (!LHSUnsigned) {
> >     // If the RHS value is > SignedMax, fold the comparison.  This
> > handles +INF
> >     // and large values.
> > -    APFloat SMax(RHS.getSemantics(), APFloat::fcZero, false);
> > +    APFloat SMax(RHS.getSemantics());
> >     SMax.convertFromAPInt(APInt::getSignedMaxValue(IntWidth), true,
> >                           APFloat::rmNearestTiesToEven);
> >     if (SMax.compare(RHS) == APFloat::cmpLessThan) {  // smax <
> > 13123.0
> > @@ -2900,7 +2900,7 @@ Instruction *InstCombiner::FoldFCmp_IntT
> >   } else {
> >     // If the RHS value is > UnsignedMax, fold the comparison. This
> > handles
> >     // +INF and large values.
> > -    APFloat UMax(RHS.getSemantics(), APFloat::fcZero, false);
> > +    APFloat UMax(RHS.getSemantics());
> >     UMax.convertFromAPInt(APInt::getMaxValue(IntWidth), false,
> >                           APFloat::rmNearestTiesToEven);
> >     if (UMax.compare(RHS) == APFloat::cmpLessThan) {  // umax <
> > 13123.0
> > @@ -2913,7 +2913,7 @@ Instruction *InstCombiner::FoldFCmp_IntT
> > 
> >   if (!LHSUnsigned) {
> >     // See if the RHS value is < SignedMin.
> > -    APFloat SMin(RHS.getSemantics(), APFloat::fcZero, false);
> > +    APFloat SMin(RHS.getSemantics());
> >     SMin.convertFromAPInt(APInt::getSignedMinValue(IntWidth), true,
> >                           APFloat::rmNearestTiesToEven);
> >     if (SMin.compare(RHS) == APFloat::cmpGreaterThan) { // smin >
> > 12312.0
> > @@ -2924,7 +2924,7 @@ Instruction *InstCombiner::FoldFCmp_IntT
> >     }
> >   } else {
> >     // See if the RHS value is < UnsignedMin.
> > -    APFloat SMin(RHS.getSemantics(), APFloat::fcZero, false);
> > +    APFloat SMin(RHS.getSemantics());
> >     SMin.convertFromAPInt(APInt::getMinValue(IntWidth), true,
> >                           APFloat::rmNearestTiesToEven);
> >     if (SMin.compare(RHS) == APFloat::cmpGreaterThan) { // umin >
> > 12312.0
> > 
> > 
> > _______________________________________________
> > llvm-commits mailing list
> > llvm-commits at cs.uiuc.edu
> > http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
> 
> 
> _______________________________________________
> 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