< Compile Options / Optimize Options >
[Format]
[Description]
- | This option omits part of the type conversion processing for the floating type. |
- | When this option is selected, the generation code that performs type conversion of the next floating-point number changes. |
- | a) Type conversion from 32-bit floating type to unsigned integer type |
- | b) Type conversion from unsigned integer type to 32-bit floating type |
- | c) Type conversion from integer type to 64-bit floating type via 32-bit floating type |
[Example]
- | < a) Type conversion from 32-bit floating type to unsigned integer type> |
unsigned long func1(float f)
{
return ((unsigned long)f);
}
When this option is not specified:
_func1:
FCMP #4F000000H,R1
BLT L12
FADD #0CF800000H,R1
L12:
FTOI R1,R1
RTS
|
- | < b) Type conversion from unsigned integer type to 32-bit floating type> |
float func2(unsigned long u)
{
return ((float)u);
}
When this option is not specified:
_func2:
BTST #31,R1
BEQ L15
SHLR #1,R1,R14
AND #1,R1
OR R14,R1
ITOF R1,R1
FADD R1,R1
BRA L16
L15:
ITOF R1,R1
L16:
RTS
|
- | < c) Type conversion from integer type to 64-bit floating type via 32-bit floating type> |
Does not apply when the dbl_size=8 specification is not valid.
double func3(long l)
{
return (double)(float)l;
}
When this option is not specified:
_func3:
ITOF R1,R1
BRA __COM_CONVfd
When this option is specified:
BRA __COM_CONV32sd
|
[Remarks]
- | When this option is specified, code performance of the relevant type conversion processing is improved. The conversion result may, however, differ from C/C++ language specifications, so take care on this point. |
- | This option of c) is invalid when optimize=0. |