>>>>> Matt Lee writes: Matt> The problem is, that though the loads can be optimized by pipelining Matt> them. The register allocator has created a dependency by using only r3 Matt> and r4, instead of using the other volatiles.
GCC's register allocator currently is designed to minimize the number of hard registers. As Ian mentioned, -frename-registers tries to perform register renaming with available registers after register allocation. As they say, "Your Mileage May Vary". David