e2 studioのcompiler関連のBugではないかと思われる動作について

こんにちは。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 List
List generated on 30/03/2020 15:14:31
www2.renesas.eu/_custom/software/ree_eclipse/e2studio7/docs/releasenotes/7.8.0/openissues.htm

e²studio 2020-04 Known Issues List
List generated on 14/04/2020 15:14:31
www2.renesas.eu/_custom/software/ree_eclipse/e2studio8/docs/releasenotes/2020_04/openissues.htm
 

Parents
  • ほやさん、こんにちは。NoMaYです。

    > (追記:listingを見たらデフォルトのままでも-fpu付きでコンパイルされていました)。

    私が試すと以下のコードで以下のリストファイルになっていてFPU命令は生成されてませんでしたよ。

    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:

     

Reply
  • ほやさん、こんにちは。NoMaYです。

    > (追記:listingを見たらデフォルトのままでも-fpu付きでコンパイルされていました)。

    私が試すと以下のコードで以下のリストファイルになっていてFPU命令は生成されてませんでしたよ。

    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:

     

Children
No Data