« ET2013 | トップページ | FM3をトラ技ARMライタでデバッグ »

2014年3月 4日 (火)

コンパイラの最適化に嵌った

GR-KURUMI/RL78G13 のプログラムを CubeSuite+ で開発しました.
その際にコンパイラ(CA78K0R)の最適化に嵌りました.

{
 char a = 0x40;
 int b;

 b = 0x10 * a;
}

最適化無しだと b は 0x0400
最適化有りだと b は 0x0000 となり正しく動かない.

ANSIでは型の異なる演算は,小さい方は大きい方に変換されます.
定数は int です.
しかしこのコンパイラは最適化有りの場合は 0x10 は char に収まる値なので char として扱われるようです.
自作コードならキャストで逃げますがオープンソースのミドルウェアなので個別の対処は危険かなと.
幸い最適化無しでも処理は間に合うので,無しで完成としました.

« ET2013 | トップページ | FM3をトラ技ARMライタでデバッグ »

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/591913/59235541

この記事へのトラックバック一覧です: コンパイラの最適化に嵌った:

« ET2013 | トップページ | FM3をトラ技ARMライタでデバッグ »