[PATCH] Cleanup expand_shift

Eric Botcazou ebotcazou@adacore.com
Wed May 4 15:34:00 GMT 2011


> 2011-05-03  Richard Guenther  <rguenther@suse.de>
>
> 	* expmed.c (expand_variable_shift): Rename to ...
> 	(expand_shift_1): ... this.  Take an expanded shift amount.
> 	For rotates recurse directly not building trees for the shift amount.
> 	(expand_variable_shift): Wrap around expand_shift_1.
> 	(expand_shift): Adjust.

Looks OK on principle, but...

> --- 2140,2161 ----
>   		 code below.  */
>
>   	      rtx subtarget = target == shifted ? 0 : target;
> ! 	      rtx new_amount, other_amount;
>   	      rtx temp1;
> !
> ! 	      new_amount = amount;
>   	      other_amount
> ! 		= simplify_gen_binary (MINUS, GET_MODE (amount),
> ! 				       GEN_INT (GET_MODE_BITSIZE (mode)),
> ! 				       amount);

... why going back to AMOUNT?  The old code uses OP1, which can be different 
from AMOUNT if SHIFT_COUNT_TRUNCATED is nonzero.

-- 
Eric Botcazou



More information about the Gcc-patches mailing list