On 1 June 2011 12:42, Richard Guenther <richard.guent...@gmail.com> wrote:
> Did you think about moving pass_optimize_widening_mul before > loop optimizations? Does that pass catch the cases you are > teaching the pattern recognizer? I think we should try to expose > these more complicated instructions to loop optimizers. > pass_optimize_widening_mul doesn't catch these cases, but I can try to teach it instead of the vectorizer. I am now testing Index: passes.c =================================================================== --- passes.c (revision 174391) +++ passes.c (working copy) @@ -870,6 +870,7 @@ NEXT_PASS (pass_split_crit_edges); NEXT_PASS (pass_pre); NEXT_PASS (pass_sink_code); + NEXT_PASS (pass_optimize_widening_mul); NEXT_PASS (pass_tree_loop); { struct opt_pass **p = &pass_tree_loop.pass.sub; @@ -934,7 +935,6 @@ NEXT_PASS (pass_forwprop); NEXT_PASS (pass_phiopt); NEXT_PASS (pass_fold_builtins); - NEXT_PASS (pass_optimize_widening_mul); NEXT_PASS (pass_tail_calls); NEXT_PASS (pass_rename_ssa_copies); NEXT_PASS (pass_uncprop); to see how it affects other loop optimizations (vectorizer pattern tests obviously fail). Thanks, Ira > Thanks, > Richard. >