<コンパイル・オプション / 最適化オプション>
[指定形式]
[詳細説明]
- | 本オプション選択時は、次の浮動小数点の型変換を行う生成コードが変化します。 |
a) 32bit浮動小数点型から符号無し整数型への変換
b) 符号無し整数型から32bit浮動小数点型への変換
c) 32bit浮動小数点型を経由した、整数型から64bit浮動小数点型への変換
[例]
< a) 32bit浮動小数点型から符号無し整数型への変換>
-fpuの指定が有効でない場合は該当しません。
unsigned long func1(float f)
{
return ((unsigned long)f);
}
オプション非指定時:
_func1:
FCMP #4F000000H,R1
BLT L12
FADD #0CF800000H,R1
L12:
FTOI R1,R1
RTS
オプション指定時:
_func1:
FTOI R1,R1
RTS
|
< b) 符号無し整数型から32bit浮動小数点型への変換>
-fpuの指定が有効でない場合は該当しません。
float func2(unsigned long u)
{
return ((float)u);
}
オプション非指定時:
_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
オプション指定時:
_func2:
ITOF R1,R1
RTS
|
< c) 32bit浮動小数点型を経由した、整数型から64bit浮動小数点型への変換>
-dbl_size=8の指定が有効でない場合は該当しません。
double func3(long l)
{
return (double)(float)l;
}
オプション非指定時:
_func3:
ITOF R1,R1
BRA __COM_CONVfd
オプション指定時:
BRA __COM_CONV32sd
|
[備考]
- | 本オプション指定時、該当する型変換の処理に対するコード性能は向上しますが、変換結果がC,C++言語規格と異なる場合がありますので、ご注意ください。 |
- | -optimize=0のとき c)は無効になります。 |