On Mon, Jun 27, 2011 at 3:46 PM, Kai Tietz <kti...@redhat.com> wrote:
> Hello,
>
> this patch sink type conversions in forward-propagate for the following 
> patterns:
> - ((type) X) op ((type) Y): If X and Y have compatible types.
> - ((type) X) op CST: If the conversion of (type) ((type-x) CST) == CST and X 
> has integral type.
> - CST op ((type) X): If the conversion of (type) ((type-x) CST) == CST and X 
> has integral type.

See IRC comments.

> Additionally it fixes another issue shown by this type-sinking in bswap 
> detection. The bswap pattern matching algorithm goes for the first hit, and 
> not tries to seek for best hit.  So we search here two times. First for di 
> case (if present) and then for si mode case.

Please split this piece out.  I suppose either walking over stmts backwards
or simply handling __builtin_bswap in find_bswap_1 would be a better
fix than yours.

Richard.

> ChangeLog
>
> 2011-06-27  Kai Tietz  <kti...@redhat.com>
>
>        * tree-ssa-forwprop.c (simplify_bitwise_binary): Improve
>        type sinking.
>        * tree-ssa-math-opts.c (execute_optimize_bswap): Separate
>        search for di/si mode patterns for finding widest match.
>
> Bootstrapped and regression tested for x86_64-pc-linux-gnu.  Ok for apply?
>
> Regards,
> Kai
>

Reply via email to