[Bug rtl-optimization/50088] movzbl is generated instead of movl
rguenth at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Wed Aug 17 14:54:00 GMT 2011
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50088
--- Comment #17 from Richard Guenther <rguenth at gcc dot gnu.org> 2011-08-17 14:42:11 UTC ---
(In reply to comment #16)
> The testcase has ...
>
> int n8 = (arr[7] * 9 + 8) & 15;
>
> for (i = 0; i < len; i+=8)
> {
> n1 = (n1 + 1) & 15;
>
> s += arr[i] << n1;
>
> The shift count is 32bit, which causes 32bit spill. Since shift/rotate
> instructions only take 8bit register (CL) as shift count, we load 8bit
> into CL. How do we solve this?
Well, always load from the spill slot with the mode the reg was spilled
if the arch says that is prefered.
More information about the Gcc-bugs
mailing list