------- Comment #7 from hjl dot tools at gmail dot com  2010-06-30 22:18 -------
(In reply to comment #6)
> Ok, thanks for investigating.  I think we may need something like this:
> 
> @@ -17574,6 +17574,7 @@ (define_peephole2
>             || GET_MODE (operands[0]) == HImode))
>         || GET_MODE (operands[0]) == SImode
>         || (TARGET_64BIT && GET_MODE (operands[0]) == DImode))
> +   && peep2_reg_dead_p (2, operands[0])
>     /* We reorder load and the shift.  */
>     && !reg_overlap_mentioned_p (operands[0], operands[4])"
>    [(set (match_dup 5) (match_dup 4))
> 
> Testing now.
> 

The old peepgole2 pattern has

   /* The intermediate operand 0 must die or be same as output.  */
   && (rtx_equal_p (operands[0], operands[5])
       || peep2_reg_dead_p (3, operands[0]))"


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44727

Reply via email to