don't use an intermediate value for fp coercion

This commit is contained in:
Joseph Poirier 2015-06-14 01:16:34 -05:00
parent c753db4f59
commit cef18ad49e

View file

@ -276,34 +276,23 @@ unsigned long ExpressionCoerceUnsignedInteger(struct Value *Val)
double ExpressionCoerceFP(struct Value *Val) double ExpressionCoerceFP(struct Value *Val)
{ {
int IntVal;
unsigned UnsignedVal;
switch (Val->Typ->Base) { switch (Val->Typ->Base) {
case TypeInt: case TypeInt:
IntVal = Val->Val->Integer; return (double)Val->Val->Integer;
return (double)IntVal;
case TypeChar: case TypeChar:
IntVal = Val->Val->Character; return (double)Val->Val->Character;
return (double)IntVal;
case TypeShort: case TypeShort:
IntVal = Val->Val->ShortInteger; return (double)Val->Val->ShortInteger;
return (double)IntVal;
case TypeLong: case TypeLong:
IntVal = Val->Val->LongInteger; return (double)Val->Val->LongInteger;
return (double)IntVal;
case TypeUnsignedInt: case TypeUnsignedInt:
UnsignedVal = Val->Val->UnsignedInteger; return (double)Val->Val->UnsignedInteger;
return (double)UnsignedVal;
case TypeUnsignedShort: case TypeUnsignedShort:
UnsignedVal = Val->Val->UnsignedShortInteger; return (double)Val->Val->UnsignedShortInteger;
return (double)UnsignedVal;
case TypeUnsignedLong: case TypeUnsignedLong:
UnsignedVal = Val->Val->UnsignedLongInteger; return (double)Val->Val->UnsignedLongInteger;
return (double)UnsignedVal;
case TypeUnsignedChar: case TypeUnsignedChar:
UnsignedVal = Val->Val->UnsignedCharacter; return (double)Val->Val->UnsignedCharacter;
return (double)UnsignedVal;
case TypeFP: case TypeFP:
return Val->Val->FP; return Val->Val->FP;
default: default: