我有一些 PowerPC 汇编代码用 gcc 交叉编译器和这个函数翻译:
uint32_t fill_cache(void)
{
__asm__ ("addi 3, 0, 0\n"); /* R3 = 0 */
/* More asm here modifying R3 and filling the cache lines. */
}
在 PowerPC EABI 下,它返回在 R3 中计算的值。编译时我得到
foo.c:105: warning: control reaches end of non-void function
有没有办法教 gcc 实际上返回了一个值?或者有没有办法抑制警告(不删除 -Wall 或添加 -Wno-*)?我想非常有选择地仅针对此功能抑制此警告,以使一般警告级别尽可能高。
由于调用者需要计算的值,因此不能使此函数返回 void。