SuperH RISC engine C/C++ コンパイラ Ver.7 不具合内容 - 過去のお知らせ SuperH RISC engine C/C++ コンパイラ Ver.7 台における不具合内容を以下に示します のチェックツールをルネサスエレクトロニクス株式会社のホームページ

Similar documents
SuperH RISC engineファミリ用 C/C++コンパイラパッケージ V.7~V.9 ご使用上のお願い

RX ファミリ用 C/C++ コンパイラ V.1.00 Release 02 ご使用上のお願い RX ファミリ用 C/C++ コンパイラの使用上の注意事項 4 件を連絡します #pragma option 使用時の 1 または 2 バイトの整数型の関数戻り値に関する注意事項 (RXC#012) 共用

Cコンパイラパッケージお知らせ

橡furoku.PDF

ブート領域、フラッシュ領域の分割方法 RL78ファミリ用Cコンパイラ CC-RL

‚æ4›ñ

Microsoft PowerPoint - CproNt02.ppt [互換モード]

untitled

数値計算

untitled

やよいの顧客管理

弥生給与/やよいの給与計算

弥生 シリーズ

弥生会計 プロフェッショナル/スタンダード/やよいの青色申告

弥生会計/やよいの青色申告

弥生会計 ネットワーク/プロフェッショナル2ユーザー

Microsoft Word - Training10_プリプロセッサ.docx

橡3sec3.PDF

RH850の割り込み/例外実現方法 CC-RHアプリケーションガイド

Fuji Xerox Co., Ltd. All rights reserved.

JavaプログラミングⅠ

講習No.12

プログラミング実習I

Microsoft PowerPoint - 11.pptx

Microsoft PowerPoint - 09.pptx

Microsoft PowerPoint - 13th.ppt [互換モード]

Prog1_10th

RL78開発環境移行ガイド R8C/M16C, H8S/H8SXからRL78への移行(統合開発環境編)(High-performance Embedded Workshop→CS+)

(c) PIXTA Co. Ltd. All Rights Reserved.

第2回

バイオプログラミング第 1 榊原康文 佐藤健吾 慶應義塾大学理工学部生命情報学科

単体テスト設計のコツ

.NETプログラマー早期育成ドリル ~VB編 付録 文法早見表~

Microsoft PowerPoint - 計算機言語 第7回.ppt

Microsoft Word - C言語研修 C++編 3.doc

関数 C 言語は関数の言語 関数とは 関数の定義 : f(x) = x * x ; 使うときは : y = f(x) 戻り値 引数

内容 1. 仕様 動作確認条件 ハードウェア説明 使用端子一覧 ソフトウェア説明 動作概要 ファイル構成 オプション設定メモリ 定数一覧 変数一

untitled

Undestand の解析 Understand の C 言語で抽出できない依存関係について サンプルコードを用いて説明します 確認バージョン Understand 3.0 (Build 640) Understand 3.1 (Build 700) Understand 4.0 (Build 78

ex05_2012.pptx

PPTテンプレート集 ver.1.0

スライド 1

slide5.pptx


相続支払い対策ポイント

150423HC相続資産圧縮対策のポイント

スライド 1

ハピタス のコピー.pages

Copyright 2008 All Rights Reserved 2

Copyright 2017 JAPAN POST BANK CO., LTD. All Rights Reserved. 1

PowerPoint Presentation

P. 2 P. 4 P. 5 P. 6 P. 7 P. 9 P P.11 P.14 P.15 P.16 P.16 P.17 P.19 P.20 P.22 P P P P P P P P P

P. 2 P. 4 P. 5 P. 6 P. 7 P. 9 P.10 P.12 P.13 P.14 P.14 P.15 P.17 P.18 P.20 P P P P P.25 P.27 P.28 Copyright 2016 JAPAN POST BA

char int float double の変数型はそれぞれ 文字あるいは小さな整数 整数 実数 より精度の高い ( 数値のより大きい より小さい ) 実数 を扱う時に用いる 備考 : 基本型の説明に示した 浮動小数点 とは数値を指数表現で表す方法である 例えば は指数表現で 3 書く

物質工学科 田中晋

Microsoft PowerPoint - 第5章補足-DB2組み込みSQL.ppt

memo

Taro-リストⅠ(公開版).jtd

Microsoft Word - Cプログラミング演習(10)

デジタル表現論・第4回

Microsoft PowerPoint pptx

Microsoft PowerPoint - C言語の復習(配布用).ppt [互換モード]

8 / 0 1 i++ i 1 i-- i C !!! C 2

Taro-ポインタ変数Ⅰ(公開版).j

RL78開発環境移行ガイド RL78ファミリ間の移行 (コンパイラ編:コンパイラオプション・アセンブラオプション)(CA78K0R→CC-RL)

C プログラミング演習 1( 再 ) 2 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ

1000 Copyright(C)2009 All Rights Reserved - 2 -

情報工学実験 C コンパイラ第 2 回説明資料 (2017 年度 ) 担当 : 笹倉 佐藤

Taro-再帰関数Ⅱ(公開版).jtd

問 2 ( 型変換 ) 次のプログラムを実行しても正しい結果が得られない 何が間違いかを指摘し 正しく修正せよ ただし int サイズが 2 バイト long サイズが 4 バイトの処理系での演算を仮定する #include <stdio.h> int main( void ) { int a =

02: 変数と標準入出力

概要 プログラミング論 変数のスコープ, 記憶クラス. メモリ動的確保. 変数のスコープ 重要. おそらく簡単. 記憶クラス 自動変数 (auto) と静的変数 (static). スコープほどではないが重要.

プログラミング及び演習 第1回 講義概容・実行制御

Slide 1

P. 2 P. 4 P. 5 P. 6 P. 7 P. 9 P P.11 P.13 P.15 P.16 P.17 P.17 P.18 P.20 P.21 P.23 P P P P P P P P.31

Microsoft PowerPoint - program.ppt [互換モード]

Taro-2分探索木Ⅰ(公開版).jtd

PowerPoint プレゼンテーション - 物理学情報処理演習

ex04_2012.ppt

CプログラミングI

KPIT 社 GNU Tool のダウンロード 使い方 インドの KPIT 社のサイトでは H8 SH 等の GNU カを無償ダウンロードできるようになっています C コンパイラ アセンブラ デバッ 日

02: 変数と標準入出力

double float

AquesTalk Win Manual

初心者にもできるアメブロカスタマイズ新2016.pages

- 2 Copyright (C) All Rights Reserved.

基礎プログラミング2015

Microsoft PowerPoint ppt


プログラミング入門1

AquesTalk プログラミングガイド

program7app.ppt

計算機プログラミング

1 return main() { main main C 1 戻り値の型 関数名 引数 関数ブロックをあらわす中括弧 main() 関数の定義 int main(void){ printf("hello World!!\n"); return 0; 戻り値 1: main() 2.2 C main

1. 主な機能追加項目 以下の検索項目をサポートしました 書誌 全文検索コマンド検索 国内 査定日 最新の査定日 ( 登録査定日または拒絶査定日 ) を検索します 査定種別 最新の登録 拒絶査定 または査定なしを検索します 審査最終処分日 最新の審査最終処分日を検索します 審査最終処分種別 最新の審

本書は INpMac v2.20(intime 5.2 INplc 3 Windows7/8/8.1に対応 ) の内容を元に記載しています Microsoft Windows Visual Studio は 米国 Microsoft Corporation の米国及びその他の国における登録商標です

Java講座

Microsoft PowerPoint - 10.ppt [互換モード]

第1回 プログラミング演習3 センサーアプリケーション

Microsoft PowerPoint - kougi9.ppt

Transcription:

SuperH RISC engine C/C++ コンパイラ Ver.7 不具合内容 - 過去のお知らせ SuperH RISC engine C/C++ コンパイラ Ver.7 台における不具合内容を以下に示します 1. 2. 4. のチェックツールをルネサスエレクトロニクス株式会社のホームページより入手できます http//tool-support.renesas.com/jpn/toolnews/shc/shcv7/dr_shcv7_4.html 1. 無条件分岐の不当削除 関数の最後の処理が条件文で 条件がネストしており かつ最後の条件節が関数呼び出し +return 文 その前の条件節が関数呼び出しで終わっている場合 関数出口への無条件分岐が不当に削除される場合 がある void sub(int parm) { if (parm == 0) { else if (parm == 1) { else if (parm == 2) { else if (parm == 3) { else if (parm == 4) { else if (parm == 5) { func1() /* <A> */ else { func2() /* <B> */ return /* <B> */ return _sub STS.L PR,@-R15 TST R4,R4 MOV R4,R0 CMP/EQ #1,R0 CMP/EQ #2,R0 CMP/EQ #3,R0 CMP/EQ #4,R0 CMP/EQ #5,R0 BF L18 MOV.L L20+2,R2 _func1 JSR @R2 NOP L11

L19 への分岐命令を削除 L18 MOV.L L20+6,R2 _func2 JMP @R2 常に関数呼び出しされる LDS.L @R15+,PR L19 LDS.L @R15+,PR RTS NOP 以下の条件をすべて満たした場合に発生することがあります 該当するかどうかはチェックツールを使用することにより確認することができます (1) optimize=1 を指定している (2) 関数の最後の処理が条件文でかつ条件がネストしている (3) 最後の条件節が関数呼び出し +return 文で終わっている ( 例の <B>) (4) (3) の直前の条件節が関数呼び出しで終わっている ( 例の <A>) 該当箇所が存在した場合 以下のいずれかの方法で回避していただきますようお願いします (1) 該当ファイルを optimize=0 指定する (2) 最後の条件節の直前の条件節 ( 例の <A>) の最後に nop() 組み込み関数を追加する #include <machine.h> /* 追加 for nop() */ else if (parm == 5) { func1() /* <A> */ nop() /* 追加 */ else { 2. unsigned 型 ->float 型キャスト不正 unsigned 型の変数を float 型に明示的にキャストした時 キャストが不当に削除される場合がある unsigned short us1 volatile unsigned short us0 volatile float f0 float *p void func() { f0 = *p = ((float)us0, (float)us1) _func MOV.L L29+50,R2 _us0 MOV.L L29+54,R5 _p MOV.W @R2,R6

MOV.L L29+58,R6 _us1 MOV.W @R6,R2 EXTU.W R2,R6 MOV.L @R5,R2 MOV.L R6,@R2 float に変換しないで *p にストア MOV.L @R5,R2 MOV.L @R2,R6 MOV.L L29+10,R2 _f0 RTS MOV.L R6,@R2 float に変換しないで f0 にストア 以下のいずれかの条件を満たした場合に発生することがあります 該当するかどうかはチェックツールを使用することにより確認することができます ただし チェックツールで検出されても不具合に該当しないケースもあります (1) unsigned 型の変数を float 型にキャストしている (2) unsigned 型の変数を double 型にキャストし かつ double=float または fpu=single オプションを指定 または long double 型にキャストし かつ fpu=single を指定している 該当箇所が存在した場合 以下の方法で回避していただきますようお願いします 当該変数を元の型を表現できる signed 型 (unsigned int/long の場合は long double 型 ) にキャストしてから float 型にキャストする 3. ld_ext() st_ext() 使用時のスタックポインタ不正移動 SH-4 で ld_exp() または st_ext() 組み込み関数使用時にパラメータにローカル配列を指定した場合 不 正にスタックポインタを移動するコードを出力する場合がある #include <machine.h> void main() { float table[4][4], data1[4][4], data2[4][4] ld_ext(table) mtrx4mul(data1,data2) FRCHG FMOV.S @R15+,FR0 R15 を更新 この間で例外が発生した場合上位のスタック領域が破壊 FMOV.S @R15+,FR1 FMOV.S @R15+,FR2 FMOV.S @R15+,FR3 FMOV.S @R15+,FR4 FMOV.S @R15+,FR5 FMOV.S @R15+,FR6

FMOV.S @R15+,FR7 FMOV.S @R15+,FR8 FMOV.S @R15+,FR9 FMOV.S @R15+,FR10 FMOV.S @R15+,FR11 FMOV.S @R15+,FR12 FMOV.S @R15+,FR13 FMOV.S @R15+,FR14 FMOV.S @R15+,FR15 FRCHG ADD #-64,R15 V 以下の条件をすべて満たした場合に発生することがあります (1) cpu=sh4 を指定し かつ ld_ext() st_ext() を使用している (2) ld_ext(),st_ext() のパラメタにローカル配列を指定している 以下のいずれかの方法で回避していただきますようお願いします (1) 該当ファイルを optimize=0 指定する (2) ld_ext() st_ext() のパラメタを外部変数にする 4. データ出力時の内部エラー " シンボルアドレス+オフセット値 " の初期値をもつ変数が多く存在する場合 内部エラー (4098) もしくはオブジェクト不正になる場合がある 以下の条件をすべて満たした場合に発生することがあります 該当するかどうかはチェックツールを使用することにより確認することができます (1) code=machinecode( デフォルト ) を指定している (2) listfile オプションを指定していない もしくは listfile オプションと show=noobject オプショ ンを同時に指定している (3) 初期値つき変数の定義が存在する (4) (3) の初期値が " シンボルアドレス + オフセット値 " または構造体先頭でないメンバのアドレスであ る (5) (3) の変数 および初期値が以下の条件を満たしている ((3) の数 +(4) のオフセット値の 10 進桁数の合計 ) 33000 extern char g #define DATA1A (&g+2147483647) #define DATA10A DATA1A, DATA1A, DATA1A, DATA1A, DATA1A,\ DATA1A, DATA1A, DATA1A, DATA1A, DATA1A

#define DATA100A DATA10A, DATA10A, DATA10A, DATA10A, DATA10A,\ DATA10A, DATA10A, DATA10A, DATA10A, DATA10A /* 以下は ( 変数の数 +offset の合計桁数 )=(3001+10*3001)=33011>33000 となる */ char *a1[1000] = { char *a2[1000] = { char *a3[1000] = { char *a = DATA1A 該当箇所が存在した場合 以下のいずれかの方法で回避していただきますようお願いします (1) 該当ファイルを listfile オプション指定する (show=noobject は指定しない ) (2) 該当ファイルを code=asmcode オプション指定する (c) Hitachi ULSI Systems Co., Ltd. 1995,2014. All rights reserved.