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.

[参考译文] 编译器/AWR1642:TI-CGT-ARM_16.9.6.LTS:uint64_t 移位运算的优化问题

Guru**** 2538960 points


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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/922976/compiler-awr1642-ti-cgt-arm_16-9-6-lts-optimization-issue-with-uint64_t-shift-operation

器件型号:AWR1642

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

您好!

我的客户在代码中使用 uint64_t shift 操作与 ti-cgt-arm_16.9.6.LTS、但发现如果启用编译器优化、附加代码无法正常工作。 如果优化关闭、它可以正确输出。

e2e.ti.com/.../mss_5F00_main.c

对于 O3、CCS 输出如下所示、这是不正确的。

temp data1 0、temp data2 100

选择关闭后、CCS 输出如下所示、正确。
temp data1 0、temp data2 efd3b900

如果我们为每个变量使用 volatile、则输出是正确的 O3。

   volatile uint64_t x;
   volatile uint64_t m=0;

您是否愿意帮助检查编译器为什么会使用 O3进行 uint64_t 移位运算?

如果这是一个合规性错误、您是否可以帮助修复它?

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

    感谢您提交测试案例。  我可以重现相同的行为。  此问题在 TI ARM 编译器版本16.9.11.LTS 中已修复。  此版本与16.9.6.LTS 相同、但错误修复除外。   

    有关如何在 Code Composer Studio 中更新编译器的详细信息、请参阅 有关 CCS 更新的文章。

    谢谢、此致、

    乔治