пример с лишними обращениями к памяти, от которых можно избавиться вручную
Компилятор не может (не имеет права) выносить переменную dst за пределы цикла и обращения к памяти будут происходить на каждой итерации. Чтобы этого избежать, программист должен переписать код так:
f(char *x, int *dst, int n)
{
int i,t =0;
for
(i=0;i<n;i++) t+=x[i]; // сохранение суммы во временной переменной
*dst+=t; // запись конечного результата в память
}