こんにちは。NoMaYです。別スレッドのFreeRTOSのRTOSDemoプログラムを作っていて気付いたのですが、e2 studioのバグだと思われる現象に遭遇しました。e2 studioのプロジェクトのプロパティでCC-RXの設定を以下の画面コピーのように設定した場合に、CC-RXでは期待した通りにワーニングメッセージが表示されますが、e2 studioのエディタ上では条件コンパイル文によりコードが除外されていることになっています。一応、e2 studioのプロジェクトのプロパティで「Renesas Toolchain Builtin Language Settings」を確認してみたところ、実際に、e2 studioが組み込みマクロを間違えていることも確認出来ました。現象再現プロジェクトのファイル一式(投稿用に作成し直して大幅に簡素化したものです)e2studio_compiler_issues_20200714.zip現象再現プロジェクトのコード
void main(void){#if ( __TFU == 1 ) int __tfu = 1;#endif#if ( __DBL8 == 1 ) int __dbl8 = 1;#endif}
以下、画面コピーです。CC-RXのワーニングメッセージが出ている行がe2 studioのエディタ上でグレー表示になってしまっているe2 studioのプロジェクトのプロパティのCC-RXの設定e2 studioのプロジェクトのプロパティの「Renesas Toolchain Builtin Language Settings」の内容が間違っている(具体的には、__DBL8の定義が無く(代わりに__DBL4の定義がある)、__TFUの定義が無い、です。)[参考リンク]e2 studio バグリストe²studio 7.8 Known Issues ListList generated on 30/03/2020 15:14:31www2.renesas.eu/_custom/software/ree_eclipse/e2studio7/docs/releasenotes/7.8.0/openissues.htme²studio 2020-04 Known Issues ListList generated on 14/04/2020 15:14:31www2.renesas.eu/_custom/software/ree_eclipse/e2studio8/docs/releasenotes/2020_04/openissues.htm
ほやさん、こんにちは。NoMaYです。> (追記:listingを見たらデフォルトのままでも-fpu付きでコンパイルされていました)。私が試すと以下のコードで以下のリストファイルになっていてFPU命令は生成されてませんでしたよ。
float f1, f2, f3;int main(void) { f3 = f1 + f2; while(1) { } return 0;}
float f1, f2, f3;
int main(void) {
f3 = f1 + f2;
while(1) {
}
return 0;
35:../src/TestGNURX_RX13T.c **** int main(void) { 14 .loc 1 35 16 15 0000 7E AA push.l r10 16 .LCFI0: 17 0002 EF 0A mov.L r0, r10 18 .LCFI1: 36:../src/TestGNURX_RX13T.c **** 37:../src/TestGNURX_RX13T.c **** f3 = f1 + f2; 19 .loc 1 37 13 20 0004 FB 52 00 00 00 00 mov.L #_f1, r5 21 000a EC 54 mov.L [r5], r4 22 000c FB 52 00 00 00 00 mov.L #_f2, r5 23 0012 EC 53 mov.L [r5], r3 24 0014 EF 32 mov.L r3, r2 25 0016 EF 41 mov.L r4, r1 26 0018 05 00 00 00 bsr ___addsf3 27 .LVL0: 28 001c EF 15 mov.L r1, r5 29 001e EF 54 mov.L r5, r4 30 .loc 1 37 8 31 0020 FB 52 00 00 00 00 mov.L #_f3, r5 32 0026 E3 54 mov.L r4, [r5] 33 .L2: 38:../src/TestGNURX_RX13T.c **** while(1) { 34 .loc 1 38 10 discriminator 1 35 0028 2E 00 bra .L2 3 36 .LFE0:
私は、-fpuを直接指定するのではなく、以下の設定にしたらFPU命令を生成させることが出来ました。(あぁ、「デフォルトのまま」というのは以下の画面コピーのCPU Typeの日本語モードでの表記かな。)e2 studio 画面コピー
35:../src/TestGNURX_RX13T.c **** int main(void) { 13 .loc 1 35 16 14 0000 7E AA push.l r10 15 .LCFI0: 16 0002 EF 0A mov.L r0, r10 17 .LCFI1: 36:../src/TestGNURX_RX13T.c **** 37:../src/TestGNURX_RX13T.c **** f3 = f1 + f2; 18 .loc 1 37 13 19 0004 FB 52 00 00 00 00 mov.L #_f1, r5 20 000a EC 54 mov.L [r5], r4 21 000c FB 52 00 00 00 00 mov.L #_f2, r5 22 0012 EC 55 mov.L [r5], r5 23 0014 FC 8B 54 fadd r5, r4 24 .loc 1 37 8 25 0017 FB 52 00 00 00 00 mov.L #_f3, r5 26 001d E3 54 mov.L r4, [r5] 27 .L2: 38:../src/TestGNURX_RX13T.c **** while(1) { 28 .loc 1 38 10 discriminator 1 29 001f 2E 00 bra .L2 30 .LFE0: