Renesas Synergy™

FAQ 3000288 : 最適化レベルを上げるとコード生成されなくなる。

Q: 質問

RXコンパイラCC-RXを使用しています。
外付けEEPROMにRSPIにて読み書きを行おうとしましたができません。

作成したEEPROM読み書き関数をソースファイルごと他のプロジェクトに移植したところ、最適化レベル0だと問題なく動作するが、最適化レベル2だとアセンブラコードが生成されず動作しません。
何が原因なのか教えて下さい。


A: 回答

EEPROMへのアクセスに関して、最適化のレベルを上げることによって処理が実施されていないことより
・変数等にvolatile宣言は付加されているか?
・関数呼び出し部分がプログラムとして冗長と判断される記述になっていないか?
が要因として考えられます。

該当関数、処理部分に関してご確認をお願い致します。 より簡単な方法としては、EEPROMへのアクセスで使用している変数に対してvolatile宣言を付加してみて下さい。

参考FAQ
FAQ 1011143 : コンパイラの最適化のレベルによる違い(CC-RX)

適用製品

RXファミリ用C/C++コンパイラパッケージ
他にご質問がございましたら、リクエストを送信してください