On 11/17/2011 12:37 AM, Alan Modra wrote:
> -      oldval = convert_modes (SImode, mode, oldval, 1);
> +      oldval = gen_reg_rtx (SImode);
> +      convert_move (oldval, orig, 1);
>        oldval = expand_simple_binop (SImode, ASHIFT, oldval, shift,
>                                   oldval, 1, OPTAB_LIB_WIDEN);

Gah.  From convert_modes, oldval is a subreg, and modifying that
subreg gets us into all sorts of trouble.  The fix should be as
simple as 

-                                   oldval, 1, OPTAB_LIB_WIDEN);
+                                   NULL_RTX, 1, OPTAB_LIB_WIDEN);

so that we don't write back into the subreg.


r~

Reply via email to