http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50182
--- Comment #28 from davidxl <xinliangli at gmail dot com> 2012-01-11 17:26:46 UTC --- See comment 24 for shorter test case. Summary: 1) the regression reported by Oleg in gcc4_6 and earlier versions is due to FE code generation difference which lead to the backend to generate code leading to partial register stall. 2) the RAT stall problem is fixed in gcc4_7 3) however in 4_7, there is a different problem -- redundant sign-extension and move instruction is generated. It could be due to the limitation in RTL forward propagation and combine pass to deal with multiple downward uses David