H8S,H8/300シリーズ C/C++コンパイラ V.6情報
改修内容
- 2009年9月29日掲載の以下の2点の問題を改修しました。
- volatile修飾のある局所変数およびvolatile修飾のない大域変数に関する注意事項 (H8C-0084)
- 構造体および共用体型変数のメンバ値に関する注意事項 (H8C-0085)
- コンパイル時に以下のインターナルエラーを出力する問題を改修しました。
エラー番号: 4098, 4099, 4677 および 4711
改修内容
- 2008年7月30日掲載の以下の7点の問題を改修しました。
- 構造体、共用体、またはそのメンバ変数がキーワード __evenaccessに基づいてアクセスされるように宣言する際の注意事項(H8C-077)
- ライブラリ関数 scanf()、 fscanf()、および sscanf()を使用する際の注意事項 (H8C-078)
- 式の中で同一変数を複数回使用する場合の注意事項 (H8C-079)
- 境界調整数に1を選択した構造体または共用体のメンバへアクセスする際の注意事項 (H8C-080)
- 空ループ削除オプション del_vacant_loop=1 使用時に多重ループをコーディングする際の注意事項 (H8C-081)
- 同一処理を複数ブロックに記述する際の注意事項 (H8C-082)
- 関数の戻り値を構造体、共用体、またはクラスのメンバ変数に代入する際の注意事項 (H8C-083)
- CPUオプションに300または300Lを選択し、数学関数を中に含んでいるオブジェクトファイルをリンクした場合に、エラーメッセージ(エラー番号L2310(E))が出力される問題を改修しました。
- コンパイル時にエラーメッセージCannot delete internal file(エラー番号C3304(F))を出力する問題を改修しました。
- ディレクトリ区切り子に'/'を使用した時に、誤ったデバッグ情報が出力されてデバッグができない場合がある問題を改善しました。
- __indirect_exオプション付でインライン展開される関数を含む、オブジェクトファイルをリンクした場合に、エラーメッセージ(エラー番号L2310(E))が出力される問題を改修しました。
新機能
- H8SXファミリの除算命令を高速で実行可能なマイコン向けに、除算式をシフト命令を使わず除算命令にコード展開するオプションdivs_instを追加しました。
- マイコン種別がH8Sの場合にも、オプションalign=4が選択可能になりました。
- 単精度浮動小数点を扱うための数学関数のうちsinf(),cosf(), tanf(), expf(),logf(), sqrtf(), およびatanf()のオブジェクトサイズを削減し、かつ演算速度および演算精度を向上しました。
改修内容
- 2006年7月3日掲載の下記の問題を改修しました。
H8SX, H8S およびH8ファミリ用C/C++コンパイラパッケージ V.6 ご使用上のお願い
- 2007年09月27日掲載の下記の問題を改修しました。
H8SX, H8S およびH8ファミリ用C/C++コンパイラパッケージ V.4 〜 V.6 ご使用上のお願い
- cpu=300Lまたはcpu=300オプションと、structregオプションを同時に選択できない問題を改修しました。
- 標準ライブラリ関数sscanf()およびrealloc()の実行結果が正しくない問題を改修しました。
- C4980エラー、C3324エラー、C3027エラー、C4633エラーおよびC4979エラーが発生する場合がある問題を改修しました。
- 構造体および共用体のメンバをデバッガで参照すると、メンバ値が正しくない場合がある問題を改修しました。
新機能
H8SXのブロック転送命令における制限事項を回避するコードを常に生成するよう改定しました。
制限事項の詳細は下記のルネサス エレクトロニクス株式会社のホームページを参照ください。
改修内容
- 2006年11月27日掲載の下記のお知らせで報告した12点の問題を改修しました。
H8SX, H8S およびH8ファミリ用C/C++コンパイラパッケージ V.4〜V.6ご使用上のお願い
- 2007年03月22日掲載の下記のお知らせで報告した12点の問題を改修しました。
H8SX, H8S およびH8ファミリ用C/C++コンパイラパッケージ V.4〜V.6 ご使用上のお願い
- C4098,C4099およびC5000インターナルエラーが発生する場合がある問題を改修しました。
改修内容
- 下記のお知らせに掲載しました16件の問題を改修しました。
H8SX, H8S およびH8ファミリ用C/C++コンパイラパッケージ ご使用上のお願い
- 以下の3点の内部エラーが発生する問題を改修しました。
- ネットワーク上にあるソースファイルをコンパイルすると、内部エラー (エラー番号C5000) が発生する場合がある。
- structregオプションを使用してソースファイルをコンパイルすると内部エラー (エラー番号C4974)が発生する場合がある。
- ASCIIコード制御文字 0x20-0x7Fのみを用いた80文字を超える文字列があるファイルをコンパイルすると、内部エラー (エラー番号C4709)が発生する場合がある。
- 以下の式をANSI規格に適合させました。
voidを返却型として定義された関数を呼び出す式がある場合、本呼び出し式をキャストしてvoid式に型変換している式。
例: (void)fun();
改修内容
- 下記のお知らせに掲載しました8件の問題を改修しました。
H8SX, H8S およびH8ファミリC/C++コンパイラパッケージ V.6 ご使用上のお願い
- 下記のお知らせに掲載しました1件の問題を改修しました。
H8SX, H8S およびH8ファミリC/C++コンパイラパッケージ V.6 ご使用上のお願い
- 以下の項目について改修しました。
- コンパイラが出力するデバッグ情報が誤っているために、デバッガ上で共用体型変数および変数を割り付けたレジスタの情報が正しく表示されない不具合を改修しました。
- C2190, C2240, C4712, およびC2238のエラーを誤って出力する不具合を改修しました。
- 出力されるべきエラーC2311が出力されない不具合を改修しました。
- コンパイラが出力したアセンブリプログラムをアセンブルした際に、アセンブルエラー (W)835 または (E)526 が出力されることがある不具合を改修しました。
新機能および機能改善
- AE-5シリーズCPUをサポートしました。
- CPU種別がH8Sの時に、H8SXと同様の最適化処理でコードを生成するようにしました。
- 以下の項目をANSIに準拠して解釈するようにしました。
- 配列のインデックス
例:----------------------------------------------
int iarray[10], i=3;i[iarray] = 0;
/* iarray[i] = 0;と同じになります */
/* 従来は、C2200 (E)およびC2233 (E)のエラーを出力 */
---------------------------------------------------
- unionのビットフィールド指定
例:------------------------------------------------
union u { int a:3;
/* 従来は、C2140 (E)のエラーを出力 */
};
----------------------------------------------------
- 定数演算
例:------------------------------------------------
static int i=1||2/0;
/* 従来は、C2501 (E)のエラーを出力 */
----------------------------------------------------
- ライブラリ関数およびマクロ追加
ANSIに定義されているライブラリ関数strtoul、およびマクロFOPEN_MAXを追加しました。
- 以下のオプションを追加しました。
- strict_ansiオプション:浮動小数点演算の結合則をANSIに準拠して解釈します。
本オプション指定することにより、演算結果がVer.6.0までと異なる場合があります。
- enable_registerオプション
register記憶クラスを指定した変数を、優先的にレジスタに割り付けてコードを生成します。
- legacy=v4オプション
CPU種別がH8Sの時に、従来(Ver.6.00以前)と同じ最適化処理でコードを生成します。
- 変数を絶対アドレスに配置する拡張機能 #pragma addressを追加しました。
- 以下の制限値を緩和しました。(CPU種別がH8SXまたはH8Sでlegacy=v4オプション指定無しの場合)
- 繰り返し文(while文、do文、またはfor文)と選択文(if文またはswitch文)の組み合わせによるネストの深さを32レベルから4096レベルへ。
- 1関数内で指定可能なgotoラベルの数を511個 から 2147483646個へ。
- switch文のネストの深さを256レベル から 2048レベルへ。
- 1つのswitch文内で指定可能なcaseラベルの数を511個 から 2147483646個へ。
- 関数定義または関数呼び出しで指定可能な引数を63個 から 2147483646個へ。
改修内容
改修内容につきましては、下のページを参照してください。
制限事項の対策
- ビットフィールドメンバの設定/参照に関する注意事項(H8C-0002)
ビットフィールドメンバをアドレスへ設定、またはアドレスから参照したとき、オブジェクト不正となる場合がある不具合を対策しました。
制限事項の対策
対策した制限事項につきましては、下のページを参照してください。
制限事項の対策
対策した制限事項につきましては、下のページを参照してください。
C/C++コンパイラ V.6.0.00
- 新CPUのサポート
CPU種別がH8SXのオブジェクトファイルの生成をサポートしました。
- 2byteサイズポインタのサポート (H8SXのみ)
_ _ptr16キーワード指定かptr16オプション指定により2byteサイズポインタが使用できます。H8SXのアドバンストモードとマキシマムモードで有効です。
- アセンブル機能 (H8SXのみ)
_ _asmキーワード指定により、C/C++ソースプログラムの中にアセンブリ言語が記述でき、直接OBJファイルを出力することが可能です。
- 新CPUのサポート
CPU種別がH8SXのオブジェクトファイルの生成をサポートしました。
標準ライブラリ構築ツール Ver.2.0.00
- リエントラントライブラリサポート
reentオプションを指定した場合、リエントラントライブラリが生成されます。