I solved it! The solution was nasty, but it works:
volatile int x;
for (...)
{
// ...
x = (int)f(args);
}
I never use the value of x, so the cast won't be a problem. Better yet, now I don't get errors about not using return value of function declared with pure attribute
.