------- Comment #14 from ian at airs dot com 2005-11-04 16:09 ------- gcc is free to copy non-volatile variables. It does this in many places and for many reasons, particularly in the new SSA optimizers in 4.0 and later. I don't know the details of where it decided to copy the register in this test case, but presumably it seemed profitable to some heuristic. I expect that it could happen if the usage is in a loop, or used on both branches of an if conditional, etc.
-- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24644