This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] 编译器/TMS320C6674:使用o2枚举的枚举的优化代码不正确

Guru**** 1839620 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/627955/compiler-tms320c6674-incorrect-optimized-code-using-enums-with-o2

部件号:TMS320C6674

工具/软件:TI C/C++编译器

可以使用非常简单的代码片段来解锁该问题:

void miniTestCode()

   枚举myEnum {};
   
   myEnum enumVal =(myEnum) 0x8.9万;

   unsigned int maskedVal =(myENum)(enumVal & 0x3FFFFFFFF);//corrupt with o2!!! 未看到掩码

   printf ("miniTestCode enumVal = 0x%x,maskedVal = 0x%x",enumVal,maskedVal);
}

预期输出为"miniTestCode enumVal = 0x8.9万,maskedVal = 0x9000"

使用CCS6 TI 8.1 v.0编译时,如果没有优化,则会出现这种情况

使用o2编译,输出为"miniTestCode enumVal = 0x8.9万,maskedVal = 0x8.9万"。

这是一个已知问题吗?

此致TI_Andreas

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    编译器足够智能,可以检查枚举所需的大小。
    当最大枚举值设置正确时,代码也正确。

    所以-没有问题。 抱歉。

    此致TI_Andreas
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢您的跟进。 -George