您好专家、
客户进行 了以下 算术运算 、 没有进行优化、优化级别分别为3。
![]()

意外的是、上述两种情况的结果是不同的。 如果开启优化、"t_f32Temp552"等于0x3F3DE3DF、而"t_f32Temp55max"等于0x3F3DE3DE、如下图所示。 但是、如果关闭 优化、它们都等于 0x3F3DE3DE。
( 优化级别为3)
顺便说一下、客户 CCS 的版本是 v7.3.0、 CGT 的版本 如下所示:

客户想知道如何避免这个问题。
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.
您好专家、
客户进行 了以下 算术运算 、 没有进行优化、优化级别分别为3。
![]()

意外的是、上述两种情况的结果是不同的。 如果开启优化、"t_f32Temp552"等于0x3F3DE3DF、而"t_f32Temp55max"等于0x3F3DE3DE、如下图所示。 但是、如果关闭 优化、它们都等于 0x3F3DE3DE。
( 优化级别为3)
顺便说一下、客户 CCS 的版本是 v7.3.0、 CGT 的版本 如下所示:

客户想知道如何避免这个问题。
高静、您好。
优化时的两个值在误差范围内。 我可以想到的一个原因是、在优化时、编译器可能会将"540.0f / Lwin_VOL_RANGE"替换为将加载到 t_f32Temp55max 中的计算值、而编译器可能会将其确定为0x3F3DE3DF。 在关闭优化的情况下、硬件同时对 t_f32Temp552和 t_f32Temp55max 进行计算、从而产生相同的十六进制值。
您可以通过查看生成的装配体来确认这一点。
谢谢、
Ashwini
/cfs-file/__key/communityserver-discussions-components-files/171/8686.main.pp.txt
您好、George、以上是预处理的源文件、请检查。 顺便说一下、客户的编译器版本是 v16.9.4。
编译器选项显示在以下链接中、一个用于不进行优化、 另一个用于优化级别3:
/cfs-file/__key/communityserver-discussions-components-files/171/with-optimization-level-of-3_5F00_-compiler_2D00_option.txt
感谢您提交测试案例。 我能够再现非常相似的结果。 我提交了问题 EXT_EP-10499 以进行调查。 欢迎您访问该链接。
谢谢、此致、
乔治
我不知道您报告的问题的解决方法。 确定问题的特征后、可能会制定一种解决方法。
更概括地说... 使用优化不应导致程序行为的差异。 如果确实如此,我们认为这是一个应该加以解决的问题。
谢谢、此致、
乔治