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 >