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.

[参考译文] AM6548:TICLANG 编译器警告-warm-interrupt-VFP-clobber 报告错误

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1650644/am6548-ticlang-compiler-warning--warm-interrupt-vfp-clobber-wrongly-reported

器件型号: AM6548

尊敬的 TI 团队:

我 再次问同样的问题 (上一个主题是: e2e.ti.com/.../6358145 ) ,因为显然我不在正确的部分。 请注意、这 与任何微控制器无关。 我报告的这个问题与 TI CLANG 编译器有关。 但我找不到“编译器“TI 器件型号...

我想报告一种奇怪的编译器行为。 我正在使用 TI Arm Clang 编译器 5.1.0.LTS。 尽管使用了属性`interrupt_save_fp`、但仍会显示以下警告:

警告:启用 VFP 的中断服务例程可能会堵塞中断者的 VFP
   state;考虑使用`interrupt_save_fp`属性来防止出现此行为[-warm-interrupt-VFP-clubber]

该警告很容易重现。 将以下代码复制到.c 文件中(例如 arm-interrupt-vfp-clubber.c):

int ___attribute__(( target(“arm“), interrupt(“SWI“))__attribute__( interrupt_save_fp )) handler ( void )
{
  返回 0;
}

然后运行以下编译命令:

tiarmclang -mthumb -mcpu=cortex-r5 -o arm-interrupt-vfp-clobber.o -c arm-interrupt-vfp-clobber.c

您能告诉我如何解决这个警告(除了使用-wno-arm-interrupt-fp-clobber 禁用它)吗?

此致、

Vincent

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

    感谢您报告此问题并提交简明的测试案例。  我能够重现同样的行为。  我提交了 EXT_EP-13448、 对其进行调查。  欢迎点击这个链接。   

    您能告诉我如何解决此警告(除了使用-wno-arm-interrupt-vfp-clubber 禁用它之外)吗?

    遗憾的是、唯一的权变措施是使用选项 -wno-arm-interrupt-fp-clobber。

    谢谢。此致、

    -乔治

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

    尊敬的 Vincent:

    您应该使用`interrupt_save_fp`属性 代替 `interrupt`属性、而 不是同时使用。  `interrupt_save_fp`属性旨在替换`interrupt`、并以完全相同的方式工作、只不过它也会保存 FP 寄存器。

    谢谢!

    -Alan

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

    大家好、感谢您的意见。 仅使用`interrupt_save_fp`时确实没有警告。

    不幸的是、 `interrupt_save_fp` “工作方式完全相同、只是它也会保存 FP 寄存器“=>返回是不同的、如以下反汇编中所示:

    在我的例子中、我必须使用`interrupt_save_fp`+`interrupt("SWI")`组合来让编译器生成正确的输出。

    重要提示:我刚刚发现 ticlang v4.0.4 LTS 不会发出错误警告!

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

    写入 __attribute__((interrupt_save_FP(“SWI“)) 、而不是 _attribute__((interrupt(“SWI“)))

    谢谢。此致、

    -乔治