У меня есть код сборки 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, поскольку вычисленное значение требуется вызывающей стороне.