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.

[参考译文] CLA 源代码不会在优化关闭的情况下进行编译

Guru**** 2585275 points
Other Parts Discussed in Thread: C2000WARE

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/1076195/cla-source-does-not-compile-with-optimisations-off

“线程:测试C2000WARE”中讨论的其它部件

您好,

我有一个混合的.c 和.CLA 程序用于 F2837xD。 通常,我的全局编译器(版本:11.1.0.00011)优化设置为级别3。

我刚刚创建了一个调试版本,其中唯一的区别是全局优化设置为0级(关闭)。 在这种情况下,编译器不会编译.CLA 文件,但它不能让我知道为什么。

Building file: "../cla_tasks.cla"
Invoking: C2000 Compiler
"C:/ti/ccs1110/ccs/tools/compiler/ti-cgt-c2000_21.6.0.LTS/bin/cl2000" -v28 -ml -mt --cla_support=cla1 --float_support=fpu32 --tmu_support=tmu0 --vcu_support=vcu2 -Ooff --opt_for_speed=5 --fp_mode=relaxed --include_path

>> Compilation failure
subdir_rules.mk:35: recipe for target 'cla_tasks.obj' failed
gmake: *** [cla_tasks.obj] Error 1

在上述参数中将-off 更改为-O3将成功编译,然后链接。

手册的“10.1如何调用 CLA 编译器”一节没有提到这方面的任何问题。 无论如何,编译器应该给出文件编译失败的原因。

谢谢你。

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

    您好,

    是否可以提供测试用例? 我需要项目+源文件。 我不一定需要完整的项目,只是被删除的东西只要它能重现问题就可以了。 它甚至不需要是一个完整的项目(构建不成功)。 我只需要重现启用优化时.CLA 文件生成的情况,当优化关闭时它会失败。

    谢谢

    Ki

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

    谢谢 Ki。

    我将这个问题缩小到特定的内联函数,看起来它是函数名称长度,而不是其内容引发了这个问题。

    我创建了一个测试用例源文件(已附加),其中包括有问题的函数名称。 当优化关闭时,此文件不会编译。 希望你们也能看到这种情况。

    foo()不会触发该问题。

    CLLLC 计算 PWMDutyPeriodPhaseShiftTicks_primToSecPowerFlow()确实会引发该问题。

    在有人认为我不能命名这样的函数之前,它来自 TI 参考设计!

    P.S.我似乎无法附加 CLA_TES.CLA,但我可以附加 CLA_TESS.zip。 这是故意的吗?

    e2e.ti.com/.../cla_5F00_tasks.zip

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

    感谢您的测试案例。 我可以像你那样重复这个问题。

    我遇到了 seg 故障:

    --

    生成文件:"./CLA_TES.CLA"
    调用:C2000编译器
    c:/ti/ccs1110/cs/tools/compiler/ti-CGT-C2000_21.6.0.LTS/bin/cl2000"-v28 -ml -mt -CLA_support=cl1 -fpot_support=fpu32 --tum_support=tmudx0 --vcasin_support=vcu2 -off-clus_path=10068 -c_dex-track_cludi="-_v_v-v-_v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v

    >>编译失败
    subdir_rules.mk:23:目标'CLA_TESS.OBJ'的配方失败
    C:/ti/C2000Ware_4_00_00_00/driverlib/f2837xd/driverlib/adc.h”,第1850行:警告#173-D:类型转换无效
    C:/ti/C2000Ware_4_00_00_00/driverlib/f2837xd/driverlib/adc.h”,第1851行:警告#173-D:类型转换无效
    C:/ti/C2000Ware_4_00_00_00/driverlib/f2837xd/driverlib/adc.h”,第1904行:警告#173-D:类型转换无效
    C:/ti/C2000Ware_4_00_00_00/driverlib/f2837xd/driverlib/adc.h”,第1905行:警告#173-D:类型转换无效
    "../CLA_TESS.CLA",第15行:警告#552-D:变量“temp”已设置,但从未使用
    "../CLA_TESS.CLA",第24行:警告#552-D:变量“temp”已设置,但从未使用

    内部错误:C:\ti\ccs1110\cs\tools\compiler\ti-CGT-C2000_21.6.0.LTs\bin\cgcla.exe 遇到分段错误
    处理函数 CLLLC_ANTATTUNDPWMDutyPeriodPhaseShiftTicks_primToSecPowerFlow 时

    这是由 TI G3 C/C++ Codegen 中的缺陷引起的。
    TI 客户支持部门可能能够建议解决方法来避免这种情况。

    升级到最新版本的编译器可能会解决此问题。

    请在 E2E 支持论坛中与 TI 联系,网址为:http://e2e.ti.com
    “开发工具”,“TI C/C++编译器”。 请参阅标题为的链接
    "提交问题"。

    我们需要看到整个错误消息以及完整,可重现的消息
    测试用例包括所有命令行选项。
    包括由选项--prproc_in_comment.创建的.pp 文件

    --

    当启用优化时,问题就像您所说的那样发生。 这只是为了这个特定的功能。

    我将把这条线程带到我们的编译器博览会上。

    谢谢

    Ki

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

    感谢您告知我们此问题并提供测试案例。  我可以再现同样的结果。  我提交了问题 EXT_EP-10749 以对此进行调查。 欢迎您通过该链接关注此问题。

    谢谢,此致,

    乔治

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

    谢谢 Ki 和 George。 最后一个问题:编译器输出告诉您导致错误的符号...

    处理函数 CLLLC_ANTATTUNDPWMDutyPeriodPhaseShiftTicks_primToSecPowerFlow 时

    但我必须通过试错来解决问题。 如何获得与您相同的编译器错误输出信息?

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

    出于某种原因,在构建时,不会发出长内部错误诊断。  当 Ki 或我构建它时,我们会看到这种诊断。  是诊断程序来命名问题功能。  一旦确定了缺陷的特征,我们可能能够解释为什么不总是发出诊断。

    谢谢,此致,

    乔治