RENESAS TOOL NEWS 2005年12月01日 : RSO-M3T-ICC740-051201D
Cコンパイラパッケージ M3T-ICC740
ご使用上のお願い |
740ファミリ用CコンパイラパッケージM3T-ICC740の使用上の注意事項を連絡します。
- 割り込み処理に関する注意事項
- 未定義関数に関する注意事項
- 該当製品
740ファミリ用Cコンパイラパッケージ M3T-ICC740
V.1.01 Release 00 および V.1.01 Release 01
- 内容
| 2.1 |
|
割り込み処理に関する注意事項
割り込み処理実行中に呼び出す関数が、割り込み処理関数以外の関数からも呼び出される場合、
リンク時に出力されるべき以下のウォーニング(*)が出力されません。
V.1.00 Release 1 ~ V.1.00 Release 1B では出力されます。
Warning[w16]: Function "name" in module (file) is called from
two function trees (with roots name1 and name2 )
* M3T-ICC740では、関数のローカル変数(関数引数およびauto変数)を静的に配置しています。
そのため、ローカル変数を持つ関数を割り込み処理関数と、
割り込み処理以外の関数の両方で使用するとローカル変数を破壊することがあります。
リンカはこれに該当する関数呼び出しがある場合にこのウォーニングを出力する仕様ですが該当製品では出力しません。
発生例:
--------------------------------------------------------------------
void func2( int );
interrupt[2] void intr_1(void)
{
func2( 2 ); /* func1()で、func2()を実行中に割り込みが発生 */
/* すると、割り込みから復帰したfunc2()の */
/* ローカル変数が破壊される */
}
void func1( void )
{
func2( 1 );
}
void main( void )
{
func1();
}
--------------------------------------------------------------------
回避策:
割り込み処理関数と割り込み処理以外の関数で同じ関数を使用しないでください。
|
| 2.2 |
|
未定義関数に関する注意事項
未定義関数を呼び出した場合、リンク時に出力されるべき以下のエラーが出力されません。
Error[e46:] Undefined external "external" referred in module
(file)
V.1.00 Release 1 ~ V.1.00 Release 1B では出力されます。
発生例:
--------------------------------------------------------------------
void func3( int );
void main( void )
{
func3(); /* 未定義関数 */
}
--------------------------------------------------------------------
回避策:
未定義関数を呼び出していないかどうか確認してください。 呼び出している場合はその関数を定義してください。 |
- 恒久対策
改修予定はありませんので、回避策で対応くださるようお願い致します。