いや例が悪いな

依存性の見やすさ以外を公平にするなら、

static void
__attribute__((noinline,noclone))
loop_dep(volatile data_type *inout, int n)
{
    int i;
    data_type acc = inout[0];

    for (i=0; i<n; i+=4) {
        /* load, mul, store */
        inout[i+0+1] = f(inout[i+0]);
        inout[i+1+1] = f(inout[i+1]);
        inout[i+2+1] = f(inout[i+2]);
        inout[i+3+1] = f(inout[i+3]);
    }
}

と比較すべきで、これなら変わらん。

というわけで上の話は、あんまり真面目に読まないでください。
また良い例を思いついたら書き直そう。