opetype = getSpec (operandType (op));
if (IS_FLOAT (opetype))
fprintf (file, "%g {", SPEC_CVAL (opetype).v_float);
- if (IS_FIXED16X16 (opetype))
+ else if (IS_FIXED16X16 (opetype))
fprintf (file, "%g {", doubleFromFixed16x16(SPEC_CVAL (opetype).v_fixed16x16));
else
fprintf (file, "0x%x {", (unsigned) floatFromVal (op->operand.valOperand));
(TYPE_UDWORD) operandLitValue (right));
break;
case EQ_OP:
- if (IS_FLOAT (let) ||
- IS_FLOAT (ret))
+ if (IS_FLOAT (let) || IS_FLOAT (ret))
{
retval = operandFromLit (operandLitValue (left) ==
operandLitValue (right));
}
- else
- if (IS_FIXED16X16 (let) ||
- IS_FIXED16X16 (ret))
+ else if (IS_FIXED16X16 (let) || IS_FIXED16X16 (ret))
{
retval = operandFromLit (operandLitValue (left) ==
operandLitValue (right));
werror(W_SIZEOF_VOID);
if (IS_FLOAT (rvtype))
ic = newiCode ('+', rv, operandFromValue (constFloatVal ("1.0")));
- else
- if (IS_FIXED16X16 (rvtype))
+ else if (IS_FIXED16X16 (rvtype))
ic = newiCode ('+', rv, operandFromValue (constFixed16x16Val ("1.0")));
else
ic = newiCode ('+', rv, operandFromLit (size));
werror(W_SIZEOF_VOID);
if (IS_FLOAT (roptype))
ic = newiCode ('+', rop, operandFromValue (constFloatVal ("1.0")));
- else
- if (IS_FIXED16X16 (roptype))
+ else if (IS_FIXED16X16 (roptype))
ic = newiCode ('+', rop, operandFromValue (constFixed16x16Val ("1.0")));
else
ic = newiCode ('+', rop, operandFromLit (size));
werror(W_SIZEOF_VOID);
if (IS_FLOAT (rvtype))
ic = newiCode ('-', rv, operandFromValue (constFloatVal ("1.0")));
- else
- if (IS_FIXED16X16 (rvtype))
+ else if (IS_FIXED16X16 (rvtype))
ic = newiCode ('-', rv, operandFromValue (constFixed16x16Val ("1.0")));
else
ic = newiCode ('-', rv, operandFromLit (size));
werror(W_SIZEOF_VOID);
if (IS_FLOAT (roptype))
ic = newiCode ('-', rop, operandFromValue (constFloatVal ("1.0")));
- else
- if (IS_FIXED16X16 (roptype))
+ else if (IS_FIXED16X16 (roptype))
ic = newiCode ('-', rop, operandFromValue (constFixed16x16Val ("1.0")));
else
ic = newiCode ('-', rop, operandFromLit (size));
isOperandGlobal (left))
{
symbol *sym = NULL;
+ operand *newRight;
if (IS_TRUE_SYMOP (right))
sym = OP_SYMBOL (right);
ic = newiCode ('=', NULL, right);
- IC_RESULT (ic) = right = newiTempOperand (ltype, 0);
- SPIL_LOC (right) = sym;
+ IC_RESULT (ic) = newRight = newiTempOperand (ltype, 0);
+ /* avoid double fetch from volatile right, see bug 1369874 */
+ if (!isOperandVolatile (right, FALSE))
+ SPIL_LOC (newRight) = sym;
+ right = newRight;
ADDTOCHAIN (ic);
}