CC-RXの変更履歴
ルネサス統合開発環境「CubeSuite+」は、2014年10⽉1⽇リリースのV3.00.00より、製品名を「CS+」に変更いたしました。
V3.06.01 → V3.06.02 への変更点 (2024/8/5)
1. 注意事項の改修
以下の注意事項を改修しました。
- Linux用コンパイラの使用に関する注意事項 (No.67)
V3.06.00 → V3.06.01 への変更点 (2024/4/22)
1. Linux OSサポート
Linux用CC-RXをリリースしました。
動作環境:
Ubuntu 20.04 LTS Desktop (64 ビット版)
V3.05.00 → V3.06.00 への変更点 (2024/1/22)
1. -ALLOW_OPTIMIZE_ENTRY_BLOCK オプションの追加
リンカに、実行プログラムのエントリ・アドレスを最適化対象に含める-ALLOW_OPTIMIZE_ENTRY_BLOCK オプションを追加しました。
本オプションを使用することにより、リンク時最適化の適用範囲が拡大される場合があります。
2.-ROM オプションの仕様変更
リンカの-ROM オプションにワイルドカードを指定できるように仕様変更しました。
3. 環境変数の仕様変更
環境変数PATH、BIN_RX の指定を省略できるように仕様変更しました。
4. 不要なE0562220 エラー発生の改善
V3.04.00 とV3.05.00 において、次の条件を全て満たすと、
不要なエラー(E0562220:Illegal mode type "double type size")を出力する場合がありましたが、これを改善しました。
(1) -dbl_size=8 または-dpfpu オプションを指定している。
(2) -rtti=on オプションを指定している。
5. 注意事項の改修
以下の注意事項を改修しました。
- ループ内でデータ転送または文字列長を計算する場合の注意事項 (No.66)
V3.04.00 → V3.05.00 への変更点 (2023/1/20)
1. 三角関数演算器(TFUv2)への対応
三角関数演算器(TFUv2)に対応するために、-tfu_versionオプション、-nosave_tfuオプション、割り込み関数仕様、組み込み関数を追加しました。
2.-crcオプションの複数指定
-crcオプションを複数同時に指定して、複数の領域のCRC計算を1度に行うことができるようになりました。
3. -nostuffオプションの仕様変更
-nostuffオプションに同じセクション種別を複数回指定した場合にエラーとしていましたが、1回指定した場合と同じ動作に変更しました。
4. va_startマクロ使用時のメッセージの抑止
va_startマクロ使用時に本来不要な警告(W0520549)を出力する場合がありましたが、これを抑止しました。
5. RXv2オブジェクトとRXv3オブジェクトの混在時のエラーを改善
CC-RX V3.04.00使用時、RXv2用オブジェクトとRXv3用オブジェクトをリンクすると以下のエラーが発生する問題を改善しました。
F0563020:No cpu information in input files
6. 注意事項の改修
以下の注意事項を改修しました。
- -branch_chainingオプションの使用に関する注意事項(No.65)
V3.03.00 → V3.04.00 への変更点 (2022/1/20)
1. -type_size_access_to_volatileオプションの追加
volatile修飾変数へのアクセスを変数の型のサイズで行う-type_size_access_to_volatileオプションを追加しました。
2. コンパイラライセンスに関するメッセージの改善
コンパイラライセンスに関するメッセージに、対象となるライセンスや対処方法を追加しました。
3. メッセージの追加
オブジェクトファイルのリンク時に、-dbl_sizeオプション指定の不一致がある場合にエラーを出力するようにしました。
4. 変数の記憶域期間の変更
記憶域クラス指定子staticを使って定義した変数の参照を効率化する機能を強化しました。
5. 直下にある関数を呼び出す場合の生成コードの改善
関数の末尾から、直下にある関数を呼び出す場合の生成コードを改善しました。
6. 注意事項の改修
以下の注意事項を改修しました。
- C++ソースで共用体を初期化する場合の注意事項(No.59)
- 構造体型または共用体型の引数の使用に関する注意事項(No.60)
- ポインタ型のキャストの使用に関する注意事項(No.61)
- 無名共用体または無名構造体の使用に関する注意事項(No.62)
- アドレスを記憶領域に書き込んだ後で、読み出して参照する場合の注意事項(No.63)
- 静的変数の参照方法に関する注意事項(No.64)
V3.02.00 → V3.03.00 への変更点 (2021/1/20)
1. -branch_chaining, -nobranch_chainingオプションの追加
分岐命令のコードサイズを削減する最適化を行う-branch_chaining オプションと、
それを抑止する-nobranch_chainingオプションを追加しました。
2. -VERBOSEオプションの追加
リンク時の詳細情報を表示する-VERBOSEオプションを追加しました。
パラメータにcrcを指定するとCRC演算の結果および出力位置アドレスを表示できるようになります。
3. MULHI,MACHI,MULLH,MACLH 命令の生成
最適化でDSP機能命令のMULHI,MACHI,MULLH,MACLH を生成するようになりました。
4. 別名解析の精度改善
組み込み関数呼び出しや集成体のコピーをまたいでメモリアクセス命令を移動するなどの、
最適化を適用しやすくなるように改善しました。
5. 注意事項の改修
以下の注意事項を改修しました。
- rmpab, rmpaw, rmpalまたはmemchrを使用する場合の注意事項(No.55)
- 末尾呼び出し最適化に関する注意事項(No.56)
- -ip_optimizeオプションの使用に関する注意事項(No.57)
- 多次元配列を使用する場合の注意事項(No.58)
V3.01.00 → V3.02.00 への変更点 (2020/1/20)
1. 三角関数演算器への対応
三角関数演算器の利用方法を選択する-tfuオプションを追加しました。
本オプションはCC-RX V3.01.00でも使用可能です。
一部の数学ライブラリ関数や組み込み関数において三角関数演算器を利用した高速演算処理が可能となります。
本オプションは、三角関数演算器を搭載したデバイスでのみ有効です。
2. MISRA-C:2012ルールによるチェック機能の拡充 【professional】
MISRA-C:2012ルールによりソース・チェックを行う-misra2012オプションの引数に、以下のルール番号を指定できるようにしました。
【必要ルール】14.2および14.3
【推奨ルール】8.13
3. 関数内での#pragma section記述の対応
関数内で#pragma sectionを記述できるようにしました。
以下のオブジェクトの配置先セクションを個別に指定することが可能です。
- 関数内static変数
4. -g_lineオプションの追加
最適化を適用した際に、ソース・デバッグ用情報の精度を向上する-g_lineオプションを追加しました。
これにより、ソース・デバッグがしやすくなります。
5. ライブラリ作成時の重複モジュール名の許可
-allow_duplicate_module_nameオプションを追加しました。
本オプションを指定することにより、ライブラリ作成時に重複するモジュール名の指定を許可するオプションを追加しました。
6. exp関数群の性能改善
標準ライブラリ関数expf、exp、およびexplの実行性能を改善しました。
これにより、これらの関数の実行サイクル数を、従来より最大で約30%程度短縮できる可能性があります。
なお、本改善によってC言語規格に準拠した範囲内で演算誤差が変わる場合があります。
また、従来、一部の入力値において、アンダーフロー発生時にERANGEを返さない場合がありましたが、本改善によって返すようになります。
7. ループ処理のコード生成を改善
以下の条件をすべて満たすような、ループ内で実行する必要のない計算を、ループ外で実行するようにコード生成を改善しました。
- ループ内で行う整数除算
- 整数除算が被除数および除数ともにループ内で不変
- 除数が0以外の定数
8. 注意事項の改修
以下の注意事項を改修しました。
- ループ内の比較式に関する注意事項 (No.52)
- 数学ライブラリ関数atanの注意事項 (No.53)
- -alias=ansiオプションの使用に関する注意事項 (No.54)
V2.08.00 → V2.08.01 への変更点 (2020/1/20)
1. 注意事項の改修
以下の注意事項を改修しました。
- 初期化子の指定がある配列型、構造体型、または共用体型の static変数宣言に関する注意事項 (No.49)
- -misra2012 オプション指定時の注意事項 (CCRX#050)
- 浮動小数点型から 64bit 整数型への型変換を含んだ定数式に関する注意事項 (CCRX#051)
- ループ内の比較式に関する注意事項 (No.52)
- 数学ライブラリ関数 atan の注意事項 (No.53)
- -alias=ansiオプションの使用に関する注意事項 (No.054)
V3.00.00 → V3.01.00 への変更点 (2019/1/21)
1.倍精度浮動小数点処理命令への対応【RXv3】
RXv3 命令セットアーキテクチャが備える倍精度浮動小数点処理命令を使用したコード生成を行えるようになりました。
これにより double、 long double 型を用いたプログラムの性能・コードサイズが改善されます。
利用時にはコンパイル・オプション、アセンブラ・オプションのそれぞれに新規オプション-dpfpuの指定が必要です。
2.レジスタ一括退避機能への対応 【RXv3】
RXv3 命令セットアーキテクチャが備えるレジスタ一括退避機能を利用できるようになりました。
#pragma interruptでbank=<バンク番号>を記述することで、割り込みハンドラ先頭でのレジスタ退避と、割り込みハンドラ末尾でのレジスタ復帰を
一括して高速に行うことが可能です。
利用時にはアセンブラ・オプションに-bank の指定が必要です。
3.複数ファイルにまたがる MISRA-C:2012 チェックオプションの追加【professional】
複数ファイルにまたがるMISRA-C:2012ルールのソース・チェックを行うオプション-misra_intermodule を追加しました。
従来は個々のファイル内でのチェックのみでしたが、本オプションを指定することにより、複数ファイルにまたがってチェックできるようになりました。
MISRA-Cとは、C言語で記述する組み込みシステムで安全性・可搬性・信頼性を確保することを目的としたソフトウェア設計標準規格です。
4.MISRA-C:2012ルールによるチェック機能の拡充【professional】
MISRA-C:2012 ルールによりソース・チェックを行うオプション-misra2012の引数に、ルール8.5およびルール8.6を指定できるようにしました。
5.コンパイル・オプション-truncated_address_initializer の追加
コンパイラのオプションに-truncated_address_initializer を追加しました。
本オプションを指定することで、C 言語における 1、2 バイト型の外部変数もしくは静的変数をアドレス で初期化する記述に対し、
E0520069 エラーを出力しなくなります。代わりに警告メッセージW0520069 を出力します。
6.ライブラリファイル入力時のセクション名変更機能の追加
最適化リンケージエディタ(rlink)オプションに-lib_rename を追加しました。
本オプションを使用することにより、リンク時に入力するライブラリファイル内の、セクション名やシンボル名を変更してリンクできます。
これにより、リンク時に入力するライブラリファイル内のセクション名やシンボル名をユーザーが管理しやすいアドレス位置に配置することが
可能です。
7.最適化強化
以下の最適化強化によりコードサイズ、実行性能が向上します。
(1) MAX/MIX/BFMOV命令の活用
生成コードでMAX/MIX/BFMOV命令をより活用するようになりました。
(2) 命令スケジューリングの強化
パイプラインがより効率的に動作するようにメモリアクセス命令を並べかえる機能を強化しました。
(3) 冗長な比較命令の削除処理の強化
冗長な比較命令の削除処理を強化しました。
8.注意事項の改修
以下の注意事項を改修しました。
- -misra2012オプション指定時の注意事項
- 浮動小数点型から64bit整数型への型変換を含んだ定数式に関する注意事項
9.その他改善
ビルド時に内部エラーが発生する問題を改善しました。
V2.08.00 → V3.00.00 への変更点 (2018/11/27)
1. RXv3命令セットアーキテクチャへの対応 【RXv3】
RXv3命令セットアーキテクチャに対応しました。
オプション -isa=rxv3 をコンパイラまたはアセンブラに指定することでRXv3命令を用いたオブジェクトコードを生成します。
2.バイナリ・ファイルに対するCRC演算結果出力
バイナリ・ファイルにCRC演算結果を出力できるようにしました。
V3.00.00未満では-form{hexadecimal | stype}指定時のみ-crcオプションが有効でしたが、
V3.00.00では-form=binary指定時にも有効になります。
これによりデバッグ時に使用するabsファイル内にもCRCの演算結果が出力されます。
3.ヘキサ・ファイルの先頭ロード・アドレス変更
出力ファイルを指定する最適化リンケージエディタオプション-output=suboptionのsuboptionにload-addressを
指定できるようにしました。
-output=load-addressを指定した場合、インテル拡張ヘキサ・ファイルまたはモトローラ・Sタイプ・ファイルを出力する際に、
ファイル上の先頭ロード・アドレスをload-addressで指定した値に変更します。
PIC(Position Independent Code)機能を有効にしたファイルを生成する際に効果的なオプションです。
4.未使用ベクタ領域へのセクションの配置
最適化リンケージエディタオプション-split_vectを追加しました。
-split_vectを用いるとベクタ番号ごとにベクタテーブルセクションを生成します。
また、未使用のベクタ番号に対するセクションを生成しません。
これにより、未使用のベクタ領域を他の用途に使うことができるようになります。
5.不正な間接関数呼び出し検出機能の拡充 【professional】
不正なアドレスへの間接関数呼び出しを検出する機能を拡充しました。
-cfi_ignore_moduleオプションにライブラリファイル(*.lib)を指定できるようになります。
これにより、検出機能の対象をより詳細に設定することができるようになります。
6.ライブラリジェネレータに指定できるオプションの追加
一部のオプションをライブラリジェネレータに指定するとコンパイルエラーになり、ライブラリを生成できない問題を改善 しました。
7.最適化強化
繰り返し文の処理中にロードする配列要素を有効活用し、ロード回数を減らして実行スピードを改善する最適化を強化しました。
8.その他改善
ビルド時に内部エラーが発生する問題を改善しました。
9.注意事項の改修
以下の注意事項を改修しました。
初期化子の指定がある配列型、構造体型、または共用体型のstatic変数宣言に関する注意事項
V2.07.00 → V2.08.00 への変更点 (2018/1/22)
1. 最適化強化
ビット演算に対する生成コードの改善や、冗長な符号拡張を削除する等、最適化を強化しました。
2.不正な間接関数呼び出し検出機能の追加【professional】
不正なアドレスへの間接関数呼び出しを検出するための機能を追加しました。
3. 消費電流チューニングソリューションへの対応
CS+及びe2 studioの消費電流チューニングソリューションのためのオブジェクトを生成するオプション -insert_nop_with_labelを追加しました。
本機能はCS+またはe2 studio経由での使用が前提であり、ユーザは直接使用しません。
4. メッセージレベル制御機能の追加
警告及びインフォメーションレベルメッセージを抑止するための -no_warningオプションを追加しました。
5. ヘキサ・ファイルのレコード長固定機能
常に一定のレコード長でヘキサファイルを出力するための -fix_record_length_and_alignオプションを追加しました。
これによりヘキサファイルの比較等の作業効率が改善します。
6. メモリ使用量の上限拡張
CC-RX が使用できるホストPC 上のメモリ量を拡張しました。より巨大なプロジェクトもビルドできるようになります。
7. 注意事項の改修
以下の2件の注意事項を改修しました。
- switch文中のラベルへの goto文を使用している場合の注意事項 (CCRX#045)
- ループ制御変数の終了条件が定数のループ文に関する注意事項 (CCRX#048)
8. その他改善
内部エラーの改善
V2.06.00 → V2.07.00 への変更点 (2017/7/20)
1. 最適化強化
生成コードの性能を改善しました。
2. MISRA-C:2012ルールによるソースチェック機能の拡充【professional】
ソース・チェック可能なMISRA-C:2012ルール数を110から119に拡充しました。
3. コンパイル・オプション -avoid_cross_boundary_prefetch の追加
以下の文字列操作ライブラリ関数を文字列操作命令に展開した場合に、4バイト境界を意識したメモリアクセスを行います。
memchr()、strlen()、strcpy()、strncpy()、strcmp()、strncmp()、strcat()、strncat()
4. アセンブラのプリデファインドマクロ__FPUの追加
アセンブラソースプログラム内においてマクロ__FPUが使用可能になります。
5. モトローラ・Sタイプ・ファイルのエンドレコード指定
モトローラ・Sタイプ・ファイルのエンドレコードを指定するために、リンカに -end_record オプションを追加しました。
6. リンク・マップ・ファイルの仕様変更
リンク・マップ・ファイルの ”Mapping List” に再配置属性のATTRIBUTE欄を追加しました。
7. リンクエラー発生時のリンク・マップ・ファイル及びメッセージ出力仕様の変更
次のエラーが発生した場合にリンク・マップ・ファイルに出力するようにしました。
8. 無償評価版として動作する場合のメッセージ仕様の変更
無償評価版として動作する場合に表示するメッセージをワーニングとしました。
9. ライセンス取得時間の改善
professionalライセンスや standardライセンスを取得するタイミングを変更して、ビルド時間を改善しました。
10. その他の改善点
主に以下の改善を行いました。
(a) コンパイル時のアセンブル時間の短縮
(b) コンパイル・エラーの改善
(c) 内部エラーの改善
V2.05.00 → V2.06.00 への変更点 (2017/1/20)
1. 最適化強化
生成コードの性能を改善しました。
2. MISRA-C:2012ルールによるソース・チェック機能の拡充【professional】
ソース・チェック可能なMISRA-C:2012ルール数を82から110に拡充しました。
3. 最適化リンケージエディタ・オプション-map/-listの仕様変更
-mapオプションは外部変数のアクセス最適化を有効にします。
従来は、-mapオプション指定時の1回目のビルドにおいて、セクションのアドレスが使用可能なアドレス範囲を超えた場合は
エラーとしてビルドを終了し、外部シンボル割り付け情報ファイルも生成していませんでした。
本バージョンより同様の場合でも可能な限りエラーとせずビルド処理を継続させ、外部シンボル割り付け情報ファイルを
出力するようにしました。
それにより-mapオプションの外部変数のアクセス最適化が適用できるようになります。
また、-mapオプションと同時に-listオプションを指定した場合には、リンク・マップ・ファイルにシンボル情報を
出力するようにしました。
4. 最適化リンケージエディタ・オプション-subcommandの変更
サブコマンド・ファイル内で-subcommand オプションを指定できるようにしました。
5. ライセンスの認証方式
ライセンスの認証方式を変更しました。
2.06.00以降を使用する場合は、ライセンス・マネージャV2.00.00以降をインストールしてください。
6. 注意事項の改修
以下4件の注意事項を改修しました。
- 2回以上のループを含むプログラムに関する注意事項(No.39)
- 関数の引数をスタックで渡す際の注意事項(No.40)
- 配列要素、構造体メンバまたは共用体メンバへの値の更新が反映されない注意事項(No.41)
- 値が1ずつ減少する演算式を含むループの注意事項(No.42)
7. その他
(1)ビット操作命令の出力
CC-RX V2.05.00以前では、最適化レベルやソース・プログラムの記述内容によってコンパイラが自動的に判別して
ビット操作命令を出力していましたが、V2.06.00ではユーザーが制御できるようにしました。
詳細な出力条件についてはユーザーズマニュアルをご参照ください。
(2)-noconst_copy の適用対象の修正
-noconst_copy オプションを指定したとき、ローカル変数の初期値に対する定数伝播も行わなくなる問題を修正しました。
(3)内部エラーの改善
ビルド時に内部エラーが発生する問題を改善しました。
V2.04.01 → V2.05.00 への変更点 (2016/7/21)
1. MISRA-C:2012ルールによるソースチェック機能【professional】
MISRA-C:2012ルールによりソースチェックを行う-misra2012オプションの引数に、以下の番号を指定できるようにしました。
2.6 2.7
9.2 9.3
12.1 12.3 12.4
14.4
15.1 15.2 15.3 15.4 15.5 15.6 15.7
16.1 16.2 16.3 16.4 16.5 16.6 16.7
17.1 17.7
18.4 18.5
19.2
20.1 20.2 20.3 20.4 20.5 20.6 20.7 20.8 20.9 20.10 20.11 20.12 20.13 20.14
2. 動的メモリ管理関数のセキュリティ強化【professional】
ヒープ領域の解放時に、不正操作を検出する機能を追加しました。
本機能を有効にした標準ライブラリを作成するには、-secure_mallocオプションを指定してライブラリジェネレータを実行してください。
本機能を使用することで、容易に安全性の向上(メモリ二重解放の問題やバッファ・オーバーフローの防止等)が可能となります。
3.組み込み関数の追加
(1)新規組み込み関数の追加
ビット操作命令を生成する組み込み関数として以下を追加しました。
- __bclr()
BCLR命令を生成します。
- __bset()
BSET命令を生成します。
- __bnot()
BNOT命令を生成します。
(2)既存の組み込み関数に対する別名の追加
V2.04.01 以前から存在する組み込み関数の別名を追加しました。
4.注意事項の改修
最適化の適用範囲に関する注意事項 (RXC#038)
5.その他改善点
主に以下のような改善を行いました。
(a) 一時ファイルの読み込み・書き込みエラーの改善
一時ファイルに対する読み書きが失敗し、コンパイルエラーになる場合がある問題を改善しました。
(b) pow(), powf()の精度改善
pow(), powf()の演算で生じる誤差を改善しました。
(c) 内部エラーの改善
コンパイル時に内部エラーが発生する問題を改善しました。
6.最適化の強化
V2.04.00 → V2.04.01 への変更点 (2015/12/21)
以下の問題を改修しました。
- "-stack_protector" および "-stack_protector_all"オプションに関する注意事項(RXC#037)
V2.03.00 → V2.04.00 への変更点 (2015/10/20)
1. standard/professional版への移行
CC-RXを以下の2つのグレードに分けました。
- standard版
- professional版
以降、professional版のライセンス登録時のみ使用できる機能は【professional】と明記します。
2. MISRA-C:2004ルールによるソースチェック機能のprofessional版への移行【professional】
以下のオプションがprofessional版のライセンス登録時のみ使用できるようになります。
(1) -misra2004
(2) -ignore_files_misra
(3) -check_language_extension
3. MISRA-C:2012ルールによるソースチェック機能【professional】
MISRA-C:2012ルールによりソースチェックを行う-misra2012オプションを追加しました。
また、ソースチェックの対象外とするファイルを指定する-ignore_files_misraオプション、
言語拡張により部分抑止されるソースチェックを有効にする-check_language_extensionオプションと同時指定できるようにしました。
4. スタック破壊検出機能【professional】
スタック破壊を検出する機能を追加しました。
本機能は-stack_protector/-stack_protector_allオプションにより、
あるいは拡張言語仕様#pragma stack_protector/#pragma no_stack_protectorにより使用可能です。
本機能を使用することにより、関数の入口・出口にスタック破壊検出コードを生成します。
5. CRC演算機能の拡張
最適化リンケージエディタの-CRCオプションを次のとおり拡張しました。
- 計算範囲をセクション名で指定できるようにしました。
- 演算方法を追加しました。
(1) 16-CCITT-MBS
CRC-16-CCITTでMSB First による演算結果を得ることができます。
(2) 16-CCITT-MSB-LITTLE-4
入力をLITTLEエンディアン4バイト単位としCRC-16-CCITTでMSB Firstによる演算結果を得ることができます。
(3) 16-CCITT-MSB-LITTLE-2
入力をLITTLEエンディアン2バイト単位としCRC-16-CCITTでMSB Firstによる演算結果を得ることができます。
(4) 16-CCITT-LSB
CRC-16-CCITTでLSB Firstによる演算結果を得ることができます。
(5) SENT-MSB
入力をLITTLEエンディアン1バイト中下位4bit単位としSENT準拠でMSB Firstによる演算結果を得ることができます。
(6) 32-ETHERNET
CRC-32-ETHERNETによる演算結果を得ることができます。
演算結果は初期値0xFFFFFFFF、XOR反転、ビットリバースされています。
6. UTF-8対応強化
以下のオプションを拡張・追加しました。
・-utf8オプション及び-outcode=utf8オプションを拡張しました。
これらのオプションは、-lang=c99オプションを指定した場合に限らず常に指定できるようになります。
・アセンブラに対して新たに-utf8オプションを追加しました。
アセンブラソース中の文字列やコメントの文字コードをUTF-8として扱うことができます。
7. その他改善点
以下のような改善を行いました。
(1) デバッグ情報の改善
不要なデバッグ情報を削除することで、
デバッグ情報を含む出力ファイル(*.obj, *.abs)のファイルサイズが小さくなるように改善しました。
(2) ステップ実行時の動作の改善
条件式に以下のいずれかの演算子を記述したif文をデバッガでステップ実行したとき、
実際のプログラムの動作と異なる表示をするケースがありましたが、これを改善しました。
&& || ! ?:
(3) 内部エラーの改善
ビルド時にコンパイラが内部エラーを発生するケースがありましたが、これを改善しました。
(4) 最適化の改善
生成コードの性能及びサイズを改善しました。
(5) コンパイル時間の改善
最適化の影響により一部のプログラムでコンパイルに時間がかかるケースがありましたが、これを改善しました。
V2.02.00 → V2.03.00 への変更点 (2015/2/5)
1. 最適化強化
生成コードの性能改善をしました。
2. 標準ライブラリのリエントラント化対応 [C標準ライブラリ(ライブラリジェネレータ)]
ライブラリジェネレータ(lbgrx)に-reentオプションの指定により、リエントラント化されたC標準ライブラリを
作成できるようにしました。生成されたC標準ライブラリに、3つの低水準関数をお客様にて 作成いただくことで、
rand/srand関数を除くC言語標準ライブラリ関数をリエントラント化することができます。
3. .OFFSET疑似命令が作成した空き領域のデータ出力抑止に対応 [C/C++コンパイラ、アセンブラ、最適化リンケージエディタ]
Sレコード・ファイル(~.mot)またはヘキサ・ファイル(~.hex)に対して、.OFFSET疑似命令の記述によりアドレスが
進んだ部分に作る無効データ(03H)を、出力抑止する機能(-create_unfilled_areaオプション)に対応しました。
4. プリデファインドマクロの追加 [C/C++コンパイラ、アセンブラ]
次のプリデファインドマクロを追加しました。
[C/C++コンパイラ]
__CCRX__ ccrxによりC/C++ソースとしてコンパイルされることを示します。
[アセンブラ]
__ASRX__ asrxによりアセンブリソースとしてコンパイルされることを示す。
__RENESAS__ ルネサス製アセンブラであることを示す。
5. const領域に割り付けられる変数の出力順序を変更 [C/C++コンパイラ]
const領域に割り付けられる変数において、初期値のあるものとないものが混在する場合に、変数をセクションに
出力する順序を変更しました。
詳しくは、ユーザーズマニュアルの「11.4.3 V2.03 以降【V1.00 ~ V2.02 との互換性】」の
「(1)const型で初期値のない静的変数について」の内容を参照ください。
6. 不具合改修
以下の問題を改修しました。
・ 一部が省略された初期値を伴う集成体に関する注意事項(RXC#034)
・ アドレス定数式の初期値を伴う関数内のstaticな集成体と共用体に関する注意事項 (RXC#035)
・ 変数に一致と大小比較判定を両方行う場合の注意事項 (RXC#036)
V2.01.00 → V2.02.00 への変更点 (2014/7/16)
1. 最適化強化
各種最適化を強化し、生成コードのコード効率の向上を実現しました。
2. 浮動小数点演算ユニット (FPU) 未使用時の浮動小数点演算性能強化
FPUを用いない浮動小数点型演算の性能を改善しました。
3. 不具合改修
以下の問題を改修しました。
・ 未参照のシンボルがある場合の-smapオプションおよび -goptimizeオプション使用に関する注意事項 (RXC#029)
・ 条件文におけるキーワード __evenaccess 指定変数の使用に関する注意事項 (RXC#031)
・ const変数へアクセスがある場合の-smapオプションおよび -goptimizeオプション使用に関する注意事項 (RXC#032)
・ #pragma address を指定した、構造体、共用体および配列に関する注意事項 (RXC#033)
V2.00.01 → V2.01.00 への変更点 (2013/11/18)
1. 新CPUコア「RXv2」に対応
RXファミリの新CPUコア「RXv2」に対応しました。
2. 最適化強化
生成コードの性能を改善しました。
3. 制限事項解除
以下の制限事項を解除しました。
・ PID機能ご利用に関する制限事項 (nouse_pid_registerオプション)
・ 標準ライブラリのご利用に関するご注意 (注)
・ instalign オプション または #pragma instalign8 が有効な関数に対する注意事項
注: 本コンパイラをV1.02.00からV1.02.01にリビジョンアップされたお客様を対象とした制限事項です。
4. 不具合改修
以下の問題を改修しました。
・ 内部エラーC0530001が発生する問題
・ 構造体変数の格納領域が正しく確保されない場合の注意事項 (RXC#025)
V2.00.00 → V2.00.01 への変更点 (2013/6/17)
以下の問題を改修しました。
・ ループの繰り返し回数がソースの記述と異なる場合の注意事項 (RXC#023)
・ -optimize=0、 -debug および -scheduleオプションをすべて使用した場合の注意事項 (RXC#024)
V1.02.01 → V2.00.00 への変更点 (2013/4/16)
1. 新最適化エンジンによるコンパイラ最適化強化[C/C++コンパイラ]
2. コンパイル時の広範囲最適化を強化[C/C++コンパイラ]
(a) 複数の入力ファイルを一ファイルとしてコンパイルするオプション(-merge_files)をサポート (C++,EC++を除く)
(b) 入力ファイルがプログラム全体と仮定して最適化するオプション(-whole_program)をサポート
(c) 大域最適化(関数にまたがる最適化)を行うオプション(-ip_optimize)をサポート
3. 中国語コード(big5:繁体字中国語、gb2312:簡体字中国語)をサポート[C/C++コンパイラ]
4. コンパイラが生成するアセンブリソースの変更[C/C++コンパイラ]
-output=srcまたは-listfileにより出力されるアセンブリソースの内容が、V.1.xxと次の点で異なります。
(a) RX命令の前、およびアセンブラ制御命令の前後に、タブが出力されます。
(b) -debugオプションがない場合、.LINE制御命令が出力されません。
(c) 一部のラベルは、コンパイラが内部処理で使用した情報がコメントで表示されます。
(d) -show=source指定時、#includeで展開された行が表示されません。
(e) -show=source指定時、#lineを記述した後の行が、実際のソース行と異なる行で表示される場合があります。
5. デバッグ時のグローバル変数の型[C/C++コンパイラ]
グローバル変数の定義を含む複数の宣言があり、かつこれらの定義と宣言の型が異なる場合、デバッガ環境では、
定義した型を用いてこの変数を表示します。
6. 不具合修正 (リンカ)
(a) -form=library指定時の次の2つの問題を修正しました
複数の入力ファイル間で重複した定義シンボルが存在しないのにも関わらず、L1320が出力される問題
複数の入力ファイル間で重複した定義シンボルが存在するのにも関わらず、L1320が出力されない問題
(b) ロケーションカウンタの境界調整数(アライメント補正値)が2以上のサイズ0のセクションを-romオプションのRAM側に指定した場合、
ROMセクション内の定義シンボルが正しくRAMセクション内アドレスに配置されない問題を修正しました。
7. メッセージの出力先変更【全コマンド】
メッセージの出力先を、標準出力から標準エラー出力に変更しました。
V1.02.00 → V1.02.01 への変更点
以下の問題を改修しました。
・ 配列参照のアドレスを配列の型と異なるポインタにキャストする際の注意事項(RXC#021)
・ 関数のすべての出口の直前に関数呼び出しがある場合の注意事項 (RXC#022)
・ C4098またはC4099インターナルエラーが発生する問題