CC-RX

ルネサス統合開発環境「CubeSuite+」は、2014年10⽉1⽇リリースのV3.00.00より、製品名を「CS+」に変更いたしました。

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.38)
   - 関数の引数をスタックで渡す際の注意事項(No.39)
   - 配列要素、構造体メンバまたは共用体メンバへの値の更新が反映されない注意事項(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インターナルエラーが発生する問題