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.

[参考译文] CCSTUDIO:已签名比较器上可能出现的编译器问题

Guru**** 2925550 points

Other Parts Discussed in Thread: RM48L952, TI-CGT

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1651152/ccstudio-probable-compiler-issue-on-signed-comparaison

部件号: CCSTUDIO
主题中讨论的其他部件: RM48L952

您好:

 

我们使用的是 RM48L952。

我们将使用 ti-cgt_arm_20.2.7.LTS 进行编译。 (自 CCS 12.8.1 起)

编译器标志为:

-mv7R4 --code_state=32 --float_support=VFPv3D16 -me -c --c99 -pdew --diag_warning=225 --diag_swrap=off ---display_error_number --enum_type=packed --abi=eabi -i$(build_include_path)-g -Ooff

我们有一个简单的测试用例来比较 2 个 signed int、但未通过测试。

例如、以下示例:

if(( S_DidInfo.s32_Min > s32_DataAsInt )||( S_DidInfo.s32_Max < s32_DataAsInt ))
 
此测试用于检查该值是否在范围内。
其结构 S_DidInfo 的最小值和最大值字段为 signed long、s32_DataAsInt 的变量也为 signed long。
我们有一个基本函数情况、其中 min 为–25000、max 为 25000、s32_DataAsInt 等于 0。
因此可以得到:
(–25000 > 0)||(25000 < 0)、如果测试结果为 true、则该结果为 true。
我无法解释这种行为。
版本 ti-cgt_arm_20.2.7.LTS 的已签名比较是否存在已知问题?
对此有何建议或评论?
我添加了调试信息、我们可以看到 R0=0xFFFF9E58(–25000) 和 R12 = 0。 屏幕位于 CMP 之后、但在 BLT 执行之前。
在 BLT 执行之后、我们在 0x24B420 处执行、因此在 IF 分支内部就好像条件为真、而条件不是真。
我无法解释您可以在内存窗口中看到的 OP 代码、我可以找到我猜到的正确文档。
 
感谢您的反馈。
 
Damien
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Damien:

    为了让我们进一步研究、您可以按照  如何提交编译器测试用例一文中的说明进行操作。 我们将能够更好地提供全面的背景帮助。

    谢谢。此致、
    Mackay

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

    您好:

    请在下面查找信息:

    我刚刚删除了大多数-i、其中显示了应用程序模块的 include 目录。


    Building O:/nuke-maintenance/Builds/ti_arm_rm48/SwToolCom/Source/DiagnosticServiceInterface/DSIN_SrvWriteDataById.o
    d:/Logiciels/ti/ccs1281/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/bin/armcl.exe  /nuke-maintenance/Dev/MemMap/Source/Include /nuke-maintenance/Builds/ti_arm_rm48/SwToolCom/Source/DiagnosticServiceInterface -mv7R4 --code_state=32 --float_support=VFPv3D16 -me -c --c99 -pdew --diag_warning=225 --diag_swrap=off ---display_error_number --enum_type=packed --abi=eabi -id:/Logiciels/ti/ccs1281/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include /nuke-maintenance/Dev/SwToolCom/Source/DiagnosticServiceInterface/DSIN_SrvWriteDataById.c -pPC -ppa
    TI ARM C/C++编译器           v20.2.7.LTS
    版权所有 (c) 1996-2018 Texas Instruments Incorporated
      “d:/Logiciels/ti/ccs1281/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/_defs.h  =>_isfinalite
      “d:/Logiciels/ti/ccs1281/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/_defs.h  =>_isfinitef
      “d:/Logiciels/ti/ccs1281/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/_defs.h  =>_isfinitel
      “d:/Logiciels/ti/ccs1281/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/_defs.h  =>_isnan
      “d:/Logiciels/ti/ccs1281/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/_defs.h  =>_isnanf
      “d:/Logiciels/ti/ccs1281/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/_defs.h  =>_isnanl
      “d:/Logiciels/ti/ccs1281/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/_defs.h  =>_isnormal
      “d:/Logiciels/ti/ccs1281/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/_defs.h  =>_isnormalf
      “d:/Logiciels/ti/ccs1281/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/_defs.h  =>_isnormalall
      “D:/Logiciels/ti/ccs1281/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/_defs.h  =>_signbit
      “d:/Logiciels/ti/ccs1281/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/_defs.h  =>_signbitf
      “d:/Logiciels/ti/ccs1281/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/_defs.h  =>_signbitl
      “D:/Logiciels/ti/ccs1281/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/_defs.h  =>_isinff
      “d:/Logiciels/ti/ccs1281/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/_defs.h  =>_isinf
      “d:/Logiciels/ti/ccs1281/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/_defs.h  =>_isinfl
      “d:/Logiciels/ti/ccs1281/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/_defs.h  =>_fpclassifyf
      “d:/Logiciels/ti/ccs1281/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/_defs.h  =>_fpclassify
      “d:/Logiciels/ti/ccs1281/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/_defs.h  =>_fpclassifyl
      “O:/nuke-maintenance/Dev/SwToolCom/Source/DiagnosticServiceInterface/DSIN_SrvWriteDataById.c  => DSIN_SrvWriteDataById

    我将把 pp 文件发送给你只是为了保密。

      刚刚添加了选项-ppc -ppa --verbose 以生成信息和 pp 文件。

    谢谢。

    Damien

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

    您好:

    请您直接通过电子邮件与我联系、以便我为您提供文件。

    我似乎无法直接从论坛联系。

    谢谢

    Damien

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

    您好 Damien、

    我已经在论坛上打开了私人消息、我更喜欢通过这种方式进行沟通、而不是通过电子邮件进行沟通。

    谢谢。此致、
    Mackay

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

    您好:

    通常情况下,您已收到私人邮件,如果您没有收到任何信息,请告知 MW。

    谢谢。

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

    您好:

    经过进一步讨论、我们确定此问题仅在调试期间使用断点时持续存在。

    向产品线中的专家传授经验、这可以更好地帮助了解断点行为。

    谢谢。此致、
    Mackay