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.

[参考译文] RM57L843:ARM-CGT-CLANG:在-OS 下为本地结构生成错误的代码

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/1618311/rm57l843-arm-cgt-clang-incorrect-code-generation-for-local-struct-under--os

部件号: RM57L843

我正在使用一个需要计算 IP 校验和的程序、似乎 tiarmclang 编译器中有一个错误。 当我  在-os 下编译 bug-report.c(使用 ARM-CGT-CLANG 4.0.3.LTS) 时)时、会丢弃第 102 行和第 103 行:

		fakehdr.zero = 0;
		fakehdr.protocol = protocol;

也就是说、这些值永远不会存储到存储器中的偏移 8 和 9 中。 那么校验和计算的输出不正确。

在-O0 下编译会生成正确的输出(值存储到偏移 8 和 9 中)。

该错误似乎已在 3.2.3.LTS 与 4.0.0.LTS 之间的某个时间引入。 该错误在 5.0.STS 之前继续存在。  

3.2.3.LTS:
      84: 68d0          ldr     r0, [r2, #12]
      86: 2400          movs    r4, #0
      88: 6912          ldr     r2, [r2, #16]
      8a: f88d 1009     strb.w  r1, [sp, #9]
      8e: 4661          mov     r1, r12
      90: f88d 4008     strb.w  r4, [sp, #8]
      94: 9000          str     r0, [sp]
      96: fa9c f09c     rev16.w r0, r12
      9a: 9201          str     r2, [sp, #4]
      9c: f8ad 000a     strh.w  r0, [sp, #10]
      a0: 4618          mov     r0, r3
      a2: f7ff fffe     bl      0xa2 <checksum+0xa2>    @ imm = #-4
4.0.0.LTS:
      74: 68d0          ldr     r0, [r2, #0xc]
      76: ba4c          rev16   r4, r1
      78: 6912          ldr     r2, [r2, #0x10]
      7a: f8ad 400a     strh.w  r4, [sp, #0xa]
      7e: e9cd 0200     strd    r0, r2, [sp]
      82: 4618          mov     r0, r3
      84: f7ff fffe     bl      0x84 <checksum+0x84>    @ imm = #-0x4
5.0.0.STS:
      72: 68d0          ldr     r0, [r2, #0xc]
      74: ba4c          rev16   r4, r1
      76: 6912          ldr     r2, [r2, #0x10]
      78: f8ad 400a     strh.w  r4, [sp, #0xa]
      7c: e9cd 0200     strd    r0, r2, [sp]
      80: 4618          mov     r0, r3
      82: f7ff fffe     bl      0x82 <checksum+0x82>    @ imm = #-0x4
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢您将此问题通知我们并提交测试案例。  我能够重现这种行为。  我提交问题 EXT_EP-13228 进行调查。  欢迎点击这个链接。  现在、对问题的描述是模糊的。  对错误进行表征后、说明将更改为更具体的说明。

    谢谢。此致、

    -乔治