>>624
a[i] = ( a[i] << 1) | ( a[i] >> 31);
って書いて普通にコンパイルしてみたが…
roll というのはローテート命令かい?
gcc で特に最適化は指定しなかったが。